【问题标题】:IE11 and Safari didn't pass the authorization header to backendIE11 和 Safari 没有将授权标头传递给后端
【发布时间】:2019-10-28 12:33:34
【问题描述】:

在我的 react 应用程序中,我向 java 后端发送了一个请求。但是IE11和Safari发送请求时,后端获取不到授权头,可以获取其他头。

我尝试将 Access-Control-Allow-Origin 和 withCrendentials 放入 axios。但不起作用。

axios({
    method: 'get',
    url: link,
    responseType: 'document',
    headers: {
        'Access-Control-Allow-Origin': '*',
        Authorization: `Bearer ${jwt}`,
        expires: expires,
        abc: 'abc'
   },
   withCredentials: true
})

前端代码:

axios({
    method: 'get',
    url: link,
    responseType: 'document',
    headers: {
        Authorization: `Bearer ${jwt}`,
        expires: expires,
        abc: 'abc'
   }
})

后端代码:

httpRequest.getHeader("Expires") -> same as expires value in header
httpRequest.getHeader("abc") -> "abc"
httpRequest.getHeader("Authorization") -> always to be null when browser is IE11 and Safari

【问题讨论】:

  • 您是否使用过F12开发工具检查控制台是否有错误?另外,您可以参考this thread。您可以检查您是否已将该网站添加到 IE 的受信任站点列表中并尝试将其删除。您也可以尝试similar thread 中的解决方法。

标签: java spring safari internet-explorer-11


【解决方案1】:

有几个原因可能是导致此问题的原因。 首先,当您使用每个浏览器导航时,请确保这些标头存在于浏览器的请求中。这是最重要的。 您可以通过按 f12 并选择“网络”选项卡来检查这一点。确保您选择了“保留日志”按钮。导航到您想要的位置并搜索您需要的请求,然后对其进行分析。 Inspect Network tab on IE 如果浏览器不使用标题,则可能根本不需要标题。 您也可以使用 Charles Proxy 或类似软件进行检查。 (https://www.charlesproxy.com/) 其次,问题可能只是标题的名称。每个浏览器都可以使用不同的标头(即使对于相同的请求)。您要查找的标头可能不存在于 Safari 或 IE11 中,但您想要的信息在该请求中的某处。搜索它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-20
    • 2016-07-12
    • 2020-03-25
    • 2017-10-18
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多