【问题标题】:CORS Server ConfigurationCORS 服务器配置
【发布时间】:2019-01-30 17:45:27
【问题描述】:

我在使用 API 时遇到了 CORS 问题,并试图通过 API 提供程序解决问题,但这有点超出我的想象。

我使用 axios 发送的获取请求是

axios({
     method: 'post',
     url: <endpoint url>,
     data: someDataObj,
     headers: {
         'Authorization': <api key>,
         'Content-Type': 'application/json;charset=UTF-8'
     }
 }) 

服务器配置为允许

  • 标头:授权、内容类型
  • 方法:POST、GET、OPTIONS
  • 原产地:*

chrome中的错误是

Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

网络响应是

GENERAL
Request URL: <api url>
Request Method: OPTIONS
Status Code: 500 Internal Server Error
Remote Address: 128.136.1.24:443
Referrer Policy: no-referrer-when-downgrade

RESPONSE HEADERS
Access-Control-Allow-Headers: Authorization,Content-Type
Access-Control-Allow-Methods: POST,GET,OPTIONS
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=UTF-8
Date: Wed, 30 Jan 2019 17:22:53 GMT
Server: Microsoft-IIS/8.5
Transfer-Encoding: chunked
X-Powered-By: ASP.NET

REQUESTHEADERS
Provisional headers are shown
Access-Control-Request-Headers: authorization,content-type
Access-Control-Request-Method: POST
Origin: <domain>
Referer: <page url>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

一切似乎都配置正确,但就像我说的,我对这些东西不是很熟悉,所以也许我们遗漏了一些简单的东西。

【问题讨论】:

    标签: javascript c# php iis


    【解决方案1】:

    Chrome 认为,您的请求不是 simple request,而是执行 preflighted request(OPTIONS 而不是 POST)。这是因为您的 Authorization 标头和您的 Content-Type 标头的值。两者都需要预检 (OPTIONS) 请求。

    服务器响应预检请求,但同时发送状态码 500(内部服务器错误),这不应该发生。状态码应该是 200(OK)。这就是 Chrome 拒绝对 OPTIONS 请求的响应并且从不执​​行实际 POST 请求的原因。这是服务器端的问题。

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 2020-09-25
      • 2016-11-29
      • 2018-11-24
      • 2021-12-24
      • 2016-07-15
      • 2021-06-15
      • 2013-06-13
      • 2016-05-27
      相关资源
      最近更新 更多