2015-07-10 66 views
0

我試圖發送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.

任何幫助將不勝感激:)!

+0

API是否允許發送「OPTIONS」?此外,只有'content-type'是'application/json'時,'OPTIONS'預先請求才會有意義。如果內容類型是「application/x-www-form-urlencoded」,您的AP是否會接受請求? – mcranston18

+0

API預定義爲接受json格式,並且我不知道它是否被允許發送OPTIONS,API不是由我配置的,所以我不能準確告訴你(或者我可以在開發工具頭文件中讀取它)。 – itodor

+0

您應該與您的API開發人員協調。如果由於服務器拒絕了預發佈OPTIONS請求,API不接受POST請求,則可能需要完成服務器端工作來適應此情況。 – mcranston18

回答

0

這個錯誤基本上意味着你正在做的其他請求是跨域,即mydomain.com - > restservicedomain.com。這些請求不再有效或被刪除(不知道爲什麼他們會這樣做)。有很多方法可以解決此問題。您可以使用這些鏈接來了解和實施解決方案 -

我也仍然在努力實現CORS請求,所以沒有一個運行的代碼。

相關問題