我正在使用jQuery AJAX查詢Web服務。我的查詢是這樣的:jQuery AJAX調用導致錯誤狀態403
var serviceEndpoint = 'http://example.com/object/details?version=1.1';
$.ajax({
type: 'GET',
url: serviceEndpoint,
dataType: 'jsonp',
contentType: 'jsonp',
headers: { 'api-key':'myKey' },
success: onSuccess,
error: onFailure
});
當我執行,我得到的403狀態錯誤,我不明白爲什麼在具有狀態碼403我的通話效果我在安全的控制是在我的服務和它被標記爲廣泛開放。我知道密鑰是有效的,因爲我在另一個調用中使用它,這是有效的。以下是可用的呼叫:
var endpoint = 'http://example.com/object/data/item?version=1.1';
$.ajax({
type: 'POST',
url: endpoint,
cache: 'false',
contentType:'application/json',
headers: {
'api-key':'myKey',
'Content-Type':'application/json'
},
data: JSON.stringify({
id: 5,
count:true
}),
success: onDataSuccess,
error: onDataFailure
});
我知道這些是兩個不同的終結點。但我100%確信這不是服務器端身份驗證或權限錯誤。再一次,服務器端的所有東西都是開放的。這意味着我在我的客戶端請求上犯了一些錯誤。
我覺得我應該傳達這個請求是在開發過程中進行的。所以,我從http://localhost:3000運行此。出於這個原因,我立即認爲這是一個CORS問題。但一切看起來都正確。我的POST請求起作用的事實,但我的GET並沒有讓我絕對沮喪。我錯過了什麼嗎?會是什麼呢?
你甚至嘗試直接在瀏覽器中打開該網址嗎?你是否遺漏了URL的'/ data /'部分以匹配工作的部分? – charlietfl
請注意,您無法爲'jsonp'請求發送標頭,這是一個腳本請求。你確定要'jsonp'而不是'json'嗎?另外爲什麼'JSON.stringify()'頭文件? GET沒有請求'contentType'。因爲沒有正文內容被髮送。你有許多問題中的任何一個都可能是問題 – charlietfl
@charlietfl我曾嘗試在瀏覽器中打開。我不熟悉我需要包含的任何'/ data /'部分。我只是需要傳入'version'和'api-key'。我認爲我應該把'api-key'作爲頭文件。我是否需要將'data'和'contentType'屬性設置爲'jsonp'?這似乎應該是一個簡單的電話。但顯然,我正在修補它並忽略了一些東西。正確的電話應該是什麼樣子? –