我正在呼叫一个内部端点,该端点以状态代码303
和Location
中的URL进行响应。
Location
值是我们无法控制的外部网站,由于浏览器出于CORS策略原因阻止了请求,因此重定向失败。
经过一些分析和研究,我了解到问题是由我们发送到内部端点的标头引起的。
会发生什么:
用户单击按钮
已执行对https://my-website.com/redirect-me
的请求
在上述请求中,我们设置了标头my-custom-authentication-header
,这是客户端用于验证所有服务的自定义标头
上述请求返回一个303
状态代码和一个Location
头,其中包含https://external-webiste.com/
浏览器使用方法https://external-webiste.com
和以下标头(摘录)执行对OPTION
的请求:
访问控制请求方法:GET
访问控制请求来源:my-website.com
访问控制请求标头:我的自定义身份验证标头
访问控制允许标题:无
GET
请求根据specifications,应用预检请求规则:
对于请求方法,有一个方法高速缓存匹配项,或者它是一个简单的方法,并且未设置强制预检标志。
对于作者请求标头的每个标头,字段名称都与标头缓存匹配,或者为simple header。
在后一种情况下,因为my-custom-authentication-header
不是simple header,但是我们不能从内部请求中删除它,而且我不知道有什么办法从< em>重定向请求。
我该如何解决?
谢谢