Chrome中出现401(未经授权),而IE中没有

8

我最近从使用jQuery转换为在Redux中使用isomorphic-fetch。在IE中运行时,它能够正常获取数据。然而在Chrome中运行时,出现以下错误:

Failed to load resource: the server responded with a status of 401 (Unauthorized)

值得注意的是,Web API启用了Windows身份验证。
以下是执行获取操作的代码:
export const fetchSearchResults = (name) => {
  return (dispatch) => {
    dispatch(requestSearchResults(name))
    return fetch(API URI HERE)
      .then(response => response.json())
      .then(json => {
        console.log('Fetch: ' + json.message.features.length)
        dispatch(receiveSearchResults(json))
      })
  }
}

https://dev59.com/AYnda4cB1Zd3GeqPGfkk - Can Ürek
1
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须在问题本身中包含所需的行为、具体问题或错误以及重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小、完整和可验证的示例 - Marcos Pérez Gude
@CanÜrek 我的问题与isomorphic-fetch有关,jQuery在跨浏览器方面运行良好。 - Jacob Mason
这个问题对我来说表述得很好,就我所知。而且被接受的答案似乎有效,原因是回答者所描述的。 - ericsoco
1个回答

28

我猜你的服务器上使用了基于cookie的身份验证。在这种情况下,这可能与fetch中的credentials键有关。使用jQuery中的XHR请求始终会发送您的Cookie,但是使用fetch时,您应该传递credentials选项。

  • 如果您向同一源(域)发出请求,则使用same-origin
  • 否则使用include

像这样:

...
fetch(API_URI_HERE, {credentials: 'same-origin'})
...

我假设它在IE中能工作是因为fetch的polyfill在底层使用XHR请求。


我会尝试解决这个问题,但是这看起来就是问题所在。谢谢! - Jacob Mason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接