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

标签 java php http get

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

最佳答案

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

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

由于 POSTMAN 始终接受您的请求,因此它是检查响应中是否包含这些 header 的好工具。如果没有,只需添加它们就可以了。

关于java - 服务器拒绝了一个请求,但接受了另一请求。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663396/

相关文章:

php - 这个 json 可能在 jquery 中输出为数组吗?

java - Servlet 和 Sun 简单 HTTP 服务器之间是否有桥梁

java - 如何将以下引用变量转换为 Java JNA?

PHP和MySQL日期出现查询

php - 我的新笔记本电脑上的 wamp 服务器出现严重问题

java - 使用 Servlet API,如何确定请求是 HTTP/1.0 还是 HTTP/1.1?

json - 使用golang的http请求中的nil chan,中断调用

php - 尽管进行了配置,NginX 仍会在 60 秒后发出 HTTP 499 错误。 (PHP 和 AWS)

java - 如何在持久化之前不设置 Id 的情况下使用新的实体对象?

java - 线程实例新旧java