重定向时出现CORS(跨域资源共享)错误

时间:2019-05-02 14:32:43

标签: google-chrome firefox cors fetch

我有一个网页(门户A),该网页正在从另一个域调用API进行登录(API B)。经过身份验证后,API B将发送HTTP 302重定向到Portal A上的另一个页面。我已经在API B上设置了适当的allow-control-allow-origin响应标头,并且我正在使用访存来发送POST请求并接收响应。

fetch(api + '/Login', {
            method: 'POST',
            body: form,
            credentials: 'include'
        })
        .then(...)

但是,我在Chrome上遇到了CORS错误消息:

  

“访问CORS策略已阻止从源'null'从'API B'重定向到'PortalA / redirectedPage'的获取:请求的资源上没有'Access-Control-Allow-Origin'标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。”

这是问题所在:

1)我无法更改重定向的工作方式,因为另一个门户B使用了API B

2)API B最初是为与门户B一起使用而构建的,因此从响应发送的重定向URL实际上在门户A中不存在。我解析了重定向URL以了解登录是否成功。

3)我需要重定向的URL才能知道登录是否成功。因此,我不能使用mode: no corsredirect: manual

将原点设置为null是用于重定向的浏览器功能,因此我也尝试在firefox上使用,它给出了不同的错误消息:

  

“跨域请求被阻止:“同源策略”不允许读取“ PortalA / redirectedPage”上的远程资源。(原因:CORS标头“ Access-Control-Allow-Origin”与“ PortalA”不匹配)。” < / p>

这很令人沮丧,因为我可以在“网络”选项卡上看到网络响应,但是提取仍会捕获CORS错误,因此我无法解析重定向网址以进行进一步的操作。

0 个答案:

没有答案