Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器拒绝一个请求,但接受另一个请求。为什么?_Java_Php_Http_Get - Fatal编程技术网

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

Java 服务器拒绝一个请求,但接受另一个请求。为什么?,java,php,http,get,Java,Php,Http,Get,我正在开发一个PHP网站,用Java向我的(服务器)Web服务发出两个HTTP GET请求。我使用相同的函数发出GET请求。服务器拒绝一个请求并返回null作为响应,而接受另一个请求并返回正确的响应。当从Google Chrome的扩展邮递员处尝试时,这两个请求都会返回正确的响应。 为什么服务器的行为如此怪异??对于服务器拒绝的请求,它表示请求的资源上不存在“Access Control Allow Origin”头。为什么会这样???因此,这意味着对于服务器接受的请求,这个特定的头是存在的。我

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

访问控制允许源代码是服务器发送的某种安全标头,以防止您的服务器被随机的其他服务器调用,但这些标头的所有处理都留给客户端。这意味着您的客户端库(例如您的webbrowser)会检查当前访问的域是否存在于
访问控制允许来源
-标题中。邮递员绕过这些检查(因为它当前无法访问任何域),因此总是返回响应

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

因为POSTMAN总是接受您的请求,所以它是一个很好的工具,可以检查这些头是否包含在响应中。如果没有,只需添加它们,你就可以了