丢弃303重定向链中的标头以防止CORS

时间:2019-07-10 13:08:09

标签: cors http-status-code-303

我正在呼叫一个内部端点,该端点以状态代码303Location中的URL进行响应。

Location值是我们无法控制的外部网站,由于浏览器出于CORS策略原因阻止了请求,因此重定向失败。

经过一些分析和研究,我了解到问题是由我们发送到内部端点的标头引起的。

会发生什么:

  1. 用户单击按钮

  2. 已执行对https://my-website.com/redirect-me的请求

  3. 在上述请求中,我们设置了标头my-custom-authentication-header,这是客户端用于验证所有服务的自定义标头

  4. 上述请求返回一个303状态代码和一个Location头,其中包含https://external-webiste.com/

  5. 浏览器使用方法https://external-webiste.com和以下标头(摘录)执行对OPTION的请求:

  

访问控制请求方法:GET

     

访问控制请求来源:my-website.com

     

访问控制请求标头:我的自定义身份验证标头

  1. 外部网站的服务器以以下标头(摘录)作为响应:
  

访问控制允许标题:无

  1. 由于预检请求失败,浏览器拒绝执行GET请求

根据specifications,应用预检请求规则:

  • 对于请求方法,有一个方法高速缓存匹配项,或者它是一个简单的方法,并且未设置强制预检标志。

  • 对于作者请求标头的每个标头,字段名称都与标头缓存匹配,或者为simple header

在后一种情况下,因为my-custom-authentication-header不是simple header,但是我们不能从内部请求中删除它,而且我不知道有什么办法从< em>重定向请求。

我该如何解决?

谢谢

0 个答案:

没有答案