2017-05-17 95 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問題。