我有一个网页(门户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 cors
或redirect: manual
将原点设置为null是用于重定向的浏览器功能,因此我也尝试在firefox上使用,它给出了不同的错误消息:
“跨域请求被阻止:“同源策略”不允许读取“ PortalA / redirectedPage”上的远程资源。(原因:CORS标头“ Access-Control-Allow-Origin”与“ PortalA”不匹配)。” < / p>
这很令人沮丧,因为我可以在“网络”选项卡上看到网络响应,但是提取仍会捕获CORS错误,因此我无法解析重定向网址以进行进一步的操作。