到目前为止,我试图找到100个不同的类似问题的解决方案,但是其中任何一个都是这样,所提出的解决方案对我没有帮助。
我在页面的同一来源放置了一个API。此API返回带有 Location 标头的状态代码 303 , Location 网址不在网站的域之内。
例如,我的页面如下:
需要使用POST方法的以下端点:
在开发人员工具的“网络”标签中可见的返回状态代码为 303 ,而响应中显示的标头如下(摘录):>
Access-Control-Allow-Header:内容类型,Access-Control-Allow-标题,授权,X-Requested-With
访问控制允许方法:POST,GET
access-control-allow-origin:*
请求完成后,浏览器会自动尝试在付款页面中重定向。但是,此刻出现了问题,该过程失败了。
首先,在网络中会出现一个使用 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 ,我没有明确设置任何标头终结点,当然,我无法从该终结点删除标头,否则会导致错误。
如何避免此问题?