2016-12-29 94 views
0

我已經構建了一個API。它在監聽8000端口和我的應用程序正在偵聽端口3000無法從js腳本發送ajax頭文件

var settings = { 
    "async": true, 
    "crossDomain": true, 
    "url": "http://localhost:8000/communities", 
    "method": "GET", 
    "headers": { 
    "authorization": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiWVx1MDBlMWJpciIsImFkbWluIjp0cnVlfQ.xtvKyxq26b7K02mVv21vkt7PbeOUatMbgxLOHIj7CQg", 
    "cache-control": "no-cache", 
    } 
} 

$(document).ready(function(){ 
    $.ajax(settings).done(function (response) { 
    console.log(response); 
    }); 
}); 

我知道這是不是有些設置了問題,因爲在服務器desactivating令牌身份驗證我得到的數據。此代碼是從PostMan chrome應用程序生成的,但是從我的js文件進行查詢時,出現401錯誤,從服務器中可以看到authorization標題尚未設置。可能是什麼問題呢?

在Chrome控制檯出現:

從本地主機服務器接收
Failed to load resource: the server responded with a status of 401 (Unauthorized) 

頁眉:3000

{'ACCEPT': '*/*', 'ACCESS-CONTROL-REQUEST-METHOD': 'GET', 'CONNECTION': 'keep-alive', 'ACCEPT-ENCODING': 'gzip, deflate, sdch, br', 'HOST': 'localhost:8000', 'REFERER': 'http://localhost:3000/', 'USER-AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36', 'ORIGIN': 'http://localhost:3000', 'ACCESS-CONTROL-REQUEST-HEADERS': 'authorization, cache-control, 'ACCEPT-LANGUAGE': 'es-ES,es;q=0.8'} 

而且從郵遞員

{'AUTHORIZATION': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiWVx1MDBlMWJpciIsImFkbWluIjp0cnVlfQ.xtvKyxq26b7K02mVv21vkt7PbeOUatMbgxLOHIj7CQg', 'ACCEPT': '*/*', 'CACHE-CONTROL': 'no-cache', 'POSTMAN-TOKEN': '06aba643-b6cb-3a7a-9e6e-61b1f2d9e94e', 'CONNECTION': 'keep-alive', 'ACCEPT-ENCODING': 'gzip, deflate, sdch, br', 'HOST': 'localhost:8000', 'USER-AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36', 'ACCEPT-LANGUAGE': 'es-ES,es;q=0.8'} 

PD:也服務器設置允許CORS 。

+0

很可能您沒有考慮到處理飛行前選項請求的需要......但是您沒有引用來自控制檯的錯誤消息或來自網絡選項卡的完整請求,所以很難肯定地說。 – Quentin

+0

你如何處理你的oauth流? –

+0

@Quentin從Chrome控制檯和服務器收到的標題中添加消息。 –

回答

0

它接受GET和POST。在這種情況下,我想一個GET

既然你是不是做一個簡單的請求(您要添加的HTTP標頭),瀏覽器發出一個preflight OPTIONS request徵得他的許可進行額外請求頭的GET請求。

服務器拒絕將OPTIONS請求視爲未經授權且瀏覽器拒絕發出GET請求。

您需要編寫服務器端代碼來處理OPTIONS請求。