Javascript 反应+;redux-401-未经授权-请求标头中缺少标头

Javascript 反应+;redux-401-未经授权-请求标头中缺少标头,javascript,reactjs,redux,authorization,redux-saga,Javascript,Reactjs,Redux,Authorization,Redux Saga,我正在尝试获取带有授权头的服务API数据,但获取401-未经授权的错误,并且响应是缺少请求头 尝试发送带有正文的授权内容-得到相同的错误401-未经授权的错误 编辑: 当我检查Postman客户端时,它工作正常,但不使用redux saga fetch方法。请帮助我。每当我使用fetch并且需要向请求添加标题时,我都会这样做: headers: { 'userName': "xyz", 'sessionToken': "xyz.................

我正在尝试获取带有授权头的服务API数据,但获取401-未经授权的错误,并且响应是缺少请求头

尝试发送带有正文的授权内容-得到相同的错误401-未经授权的错误

编辑:


当我检查Postman客户端时,它工作正常,但不使用redux saga fetch方法。请帮助我。

每当我使用
fetch
并且需要向请求添加
标题时,我都会这样做:

 headers: {
        'userName': "xyz",
        'sessionToken': "xyz................."
      }

因此,您可能希望尝试这种方法,并且为了调试此问题,您可能希望检查
Netowrk
选项卡,并验证随请求发送的标头。

您需要添加
授权
承载标头

例如:

headers: new Headers({
  Accept: 'application/json',
  Authorization: token,
  'Content-Type': 'application/json',
}),
在代码中:

headers = new Headers({
    'Authorization': `Bearer ${authorizationCodeOrCredentials}`
});

看起来是后端问题-CORS筛选器配置

如果后端在不同的服务器上(可能在同一台机器上,但在不同的应用程序服务器上,换句话说,在不同的端口上),则必须执行一些CORS筛选器配置

前端代码在服务器上运行-这意味着它是一个应用程序。邮递员是一个客户端,就像谷歌浏览器或其他浏览器一样。这就是为什么你可以在邮递员那里做请求而没有任何问题,但是在你的前端应用程序中没有成功的原因

我猜你在后端启用了头


现在,如果您使用的是Linux系统&如果您使用的是chrome浏览器,那么您必须使用来允许您的自定义标题

使用以下命令运行您的chrome

/opt/google/chrome/chrome--禁用web安全--用户数据目录


现在试一试,如果一切正常,那么它就是后端的CORS问题。

试过了,但不起作用。获取与上述相同的错误。请查看API文档,错误表明您没有提供正确的标题。你也检查过开发工具中的“网络”选项卡以确保你的头被传递了吗?我的服务只需要sessionToken和用户名,即使我尝试发送授权,它仍然不起作用。。。获取401ID是否尝试将
用户名
更改为
用户名
?在某些情况下,区分大小写很重要,这取决于服务器解析内容的方式。而且,看起来您也没有发送sessiontoken。您的服务器专门查找的是
用户名
会话肯
,而不是
用户名
。看起来像是实际代码中的输入错误。。你能确认??值得一试吗?
凭证:“同一来源”
。你有权访问后端代码吗?如果是的话,那么后端使用哪种语言?是的,我有后端代码-JAX-RS。但我不知道java,我仍然可以尝试…你尝试过小写的“username”和“sessiontoken”键而不是“username”和“sessiontoken”键吗?对我来说似乎也是合理的。邮递员正在执行post请求,而实际的获取请求被阻止。
headers = new Headers({
    'Authorization': `Bearer ${authorizationCodeOrCredentials}`
});
return fetch(`{SERVICE API URL}`, {
  method: 'GET',        
  headers: {
    'Authorization': 'Bearer ' + someValue, // Add this line
    'userName': "username",
    'password': "password",
    'content-type': 'application/json'
  }
})
.then(response => response.json())
.then(json => dispatch(receivePosts(reddit, json)))