即使标头设置正确,状态代码303也会导致CORS问题

时间:2019-07-02 21:32:30

标签: cors

到目前为止,我试图找到100个不同的类似问题的解决方案,但是其中任何一个都是这样,所提出的解决方案对我没有帮助。

我在页面的同一来源放置了一个API。此API返回带有 Location 标头的状态代码 303 Location 网址不在网站的域之内。

例如,我的页面如下:

  

https://example.com

需要使用POST方法的以下端点:

  

https://example.com/api/payment

在开发人员工具的“网络”标签中可见的返回状态代码为 303 ,而响应中显示的标头如下(摘录):

  

Access-Control-Allow-Header:内容类型,Access-Control-Allow-标题,授权,X-Requested-With

     

访问控制允许方法:POST,GET

     

access-control-allow-origin:*

     

位置:https://payment-page.com/

请求完成后,浏览器会自动尝试在付款页面中重定向。但是,此刻出现了问题,该过程失败了。

首先,在网络中会出现一个使用 OPTION 方法的付款页面URL请求。在相同的请求详细信息中,有以下警告:

  

显示了临时标题

我猜想请求永远不会完成,并且XHR立即失败,状态码为0。

此外,我在控制台中看到以下错误:

  

从原点“ https://payment-page.com/”对“ https://example.com/api/payment”(从“ https://example.com/”重定向到XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控件检查:所请求的资源上没有“ Access-Control-Allow-Origin”标头。

问题是我无法明确设置 Access-Control-Allow-Origin ,因为不是我的代码执行请求,而是由浏览器自动执行。

我已经阅读了官方规范,并且已经阅读了执行简单的CORS请求的建议,但是在这种情况下,如果没有 / api / payment ,我没有明确设置任何标头终结点,当然,我无法从该终结点删除标头,否则会导致错误。

如何避免此问题?

0 个答案:

没有答案