【问题标题】:Server rejects one request but accepts another. Why?服务器拒绝一个请求但接受另一个请求。为什么?
【发布时间】:2014-09-04 10:42:21
【问题描述】:

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

【问题讨论】:

    标签: java php http get


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-02-14
      • 1970-01-01
      • 2012-04-18
      • 2023-03-27
      • 2017-12-22
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多