我試圖發送POST請求到自定義API(我有憑據),但不斷收到401錯誤「Unathorized」。這部分代碼,使要求:在javascript中發送預檢cors請求
var httpRequest = new XMLHttpRequest();
var test = [{
"action": "start",
"time": "2014-05-02T13:09:22+02:00",
"channel": {
"id": "rtvslo1"
},
"content": {
"id": "rtvslo1",
"title": "testContent",
"channel_id": "rtvslo1",
"time": "2014-05-02T13:09:22+02:00",
"duration": 3
},
"subscriber": {
"id": "f8721ca0-d1e9-11e3-9c1a-0800200c9a66",
"country": "si"
},
"device": {
"id": "012fa920-d1ea-11e3-9c1a-0800200c9a66",
"type": "tv"
},
"hd": false,
"test": true
}];
var jsonString = JSON.stringify(test);
httpRequest.open('POST', url, true);
httpRequest.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
httpRequest.setRequestHeader("Content-type", "application/json");
httpRequest.send(jsonString);
當我嘗試看到錯誤在Chrome瀏覽器開發工具,我得到OPTIONS要求是401 Unathorized,所以它甚至犯規得到了POST。
在CHROM開發工具,我得到的輸出:名稱:事件的方法:OPTIONS狀態401 ...
選項http://xstreampipy.tvbeat.com/api/2.0/events 401(未授權)myFunction的@的test.html:39onclick @的test.html:60 的test.html :1 XMLHttpRequest無法加載http://xstreampipy.tvbeat.com/api/2.0/events。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許原產地'null'訪問。該響應具有HTTP狀態代碼401.
任何幫助將不勝感激:)!
API是否允許發送「OPTIONS」?此外,只有'content-type'是'application/json'時,'OPTIONS'預先請求才會有意義。如果內容類型是「application/x-www-form-urlencoded」,您的AP是否會接受請求? – mcranston18
API預定義爲接受json格式,並且我不知道它是否被允許發送OPTIONS,API不是由我配置的,所以我不能準確告訴你(或者我可以在開發工具頭文件中讀取它)。 – itodor
您應該與您的API開發人員協調。如果由於服務器拒絕了預發佈OPTIONS請求,API不接受POST請求,則可能需要完成服務器端工作來適應此情況。 – mcranston18