服务器拒绝一个请求,但接受另一个请求.为什么?


Server rejects one request but accepts another. Why?

我正在从我目前开发的一个PHP网站向我的(服务器)Java Web服务发出两个HTTPGET请求。我使用相同的函数来进行GET请求。服务器拒绝一个请求&返回null作为响应,而它接受另一个&返回正确的响应。当从Google Chrome的扩展POSTMAN尝试这两个GET请求时,都会返回正确的响应。为什么服务器的行为如此怪异??对于服务器拒绝的请求,它表示请求的资源上不存在"Access Control Allow Origin"标头。为什么会这样???因此,这意味着对于服务器接受的请求,存在这个特定的头。我很困惑。

Access-Control-Allow-Origin是服务器发送的某种安全标头,用于防止您的服务器被随机的其他服务器调用,但这些标头的所有处理都留给客户端。这意味着您的客户端库(例如Web浏览器)将检查当前访问的域是否存在于Access-Control-Allow-Origin-标头中。POSTMAN绕过这些检查(因为它目前无法访问任何域),因此总是返回响应。

为了防止此问题发生,您应该检查的是始终在Access-Control-Allow-Origin中包含客户端域(或者简单地使用*来允许所有起源)。确保也将其包含在OPTIONS请求中,因为它们通常在POSTPUT请求之前发送。如果您的请求只是在某个HTTP方法上失败,请确保还将Access-Control-Allow-Methods-标头设置为包括所有所需的HTTP方法(或简单地使用*

由于POSTMAN总是接受您的请求,因此它是检查响应中是否包含这些标头的好工具。如果没有,只需添加它们,你就应该没事了。