2016-02-19 84 views
1

讓我通過說這是在POSTMAN中,Chrome的附加API客戶端中工作。但是它並不適用於我的實際應用程序,我想知道是否有某些我忘記包含在獲取請求中。預檢請求失敗,使用window.fetch api

我有以下要求。

(id, vzId)=>{ 
      var json = {id: id, vzId: vzId, }; 
      var request = { 
       method: 'POST', 
       body: json, 
       headers: new Headers({ 
        'Accept': 'application/json', 
        'Content-Type': 'application/json' 
       }) 
      } 
      fetch('http://localhost:8080/notification/markRead',request).then(function(response){ 
       return response.json(); 
      }).then(function(json){ 
       console.log(json); 
      }) 
     } 

當請求被觸發時,它返回給我這個錯誤。

OPTIONS http://localhost:8080/notification/markRead 
Fetch API cannot load http://localhost:8080/notification/markRead. 
Response for preflight has invalid HTTP status code 403 

我使用了完全相同的網址和數據在我的鉻REST客戶端(郵差)和它的工作,但由於某些原因,當我使用的提取API,它不工作。任何幫助將非常感激。

回答

2

如果有人在這方面磕磕絆絆並且可以幫助未來的人,我們找到了答案。我發佈的代碼沒有任何問題。郵差工作的原因是郵差而不是客戶,因爲郵差沒有做預檢請求。客戶端(幾乎所有的網站都會這樣做)以OPTIONS方法的形式發送預檢請求。後端Spring服務器不允許使用選項方法。後端開發人員必須允許OPTIONS方法訪問服務器中的特定路由,而不僅僅是POST。

因此,如果您對郵遞員進行測試但無法複製該行爲,請記住郵遞員不會發送預檢請求。