2017-05-17 94 views
1
return fetch(`{SERVICE API URL}`, { 
    method: 'GET',   
    headers: { 
    'userName': "username", 
    'password': "password", 
    'content-type': 'application/json' 
    } 
}) 
.then(response => response.json()) 
.then(json => dispatch(receivePosts(reddit, json))) 

我试图获得与授权头服务API的数据,但得到401 - 未授权错误,并且响应缺少请求头反应过来+终极版 - 401 - 授权 - 缺少头在请求的头部

尝试与身体发送授权内容也 - 获取相同的错误401 - 未经授权的错误。

编辑:

enter image description here

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

当我与邮差客户端检查它工作正常,但不与终极版,传奇取方法。请帮助我。

+0

看起来像在实际代码中的拼写错误..你能证实? –

+0

值得尝试'凭据:'同源''。 –

+0

你有权访问后端代码吗?如果是,那么您使用哪种语言作为后端? –

回答

1

每当我用fetch,我需要添加headers给我做这样的要求:

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

,所以你可能想尝试这种方法,也为了调试这个问题你可能要检查您的Netowrk选项卡,并验证哪些头与请求一起发送。

+0

试过,但没有工作。如上所述获得相同的错误。 – KumarA

+0

检查API文档,错误表明您没有提供正确的标题。你还检查了开发工具中的网络选项卡以确保你的头文件被传递了吗? – G4bri3l

2

您需要添加一个Authorization承载头。

例如:

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))) 
+0

我的服务期望仅用于sessionToken和用户名,即使我试图发送授权,仍然无法正常工作......获得401 – KumarA

+1

您是否尝试将'userName'更改为'username'?在某些情况下,大小写敏感性取决于您的服务器如何解析内容。另外,它看起来也不像你在发送会话令牌。你的服务器专门寻找'username'和'sessiontoken',而不是'userName'。 – Lansana

2

看起来就像是一个后台问题 - CORS过滤器配置

如果后端是一个不同的服务器上(可能在同一台机器上,但在不同的应用服务器上,换句话说,在不同的端口上),你必须做一些CORS Filters co nfigurations。

前端代码在服务器上运行 - 这意味着它是一个应用程序。邮差是一个客户端,就像Google Chrome或任何其他浏览器一样。这就是为什么您可以在没有Postman问题的情况下执行请求的原因,但是您的前端应用程序不成功。

我想你能在后端

现在,你必须Access-Control-Allow-Origin头让你自定义页眉Access-Control-Allow-Headers

+0

似乎也似乎对我来说。邮差正在发送邮件请求,而实际的提取请求被阻止。 – larrydahooster

0

如果您使用的是Linux系统&如果你在它的镀铬...

使用以下命令运行在Chrome

的/ opt /谷歌/铬/ - 禁用网络安全的user-data-dir的

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