2017-11-11 219 views
0

我想提出以下虛假AJAX OPTIONS請求被用GET請求

let x = new XMLHttpRequest(); 
x.onload = function(event) { …}; 
x.open("GET", url, true); 
x.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 
x.send(); 

問題與代碼標準的AJAX請求是,由於某種原因,我無法捉摸,二Ajax請求是一起做製作。第一個是OPTIONS請求,第二個是我真正想要的GET請求。任何想法爲什麼?

我的服務器是一個應用程序的NodeJS其中我使用nodemon其重新啓動服務器,如果它檢測index.js已發生變化(這是發展有幫助的,當你不希望停止和重新啓動服務器)。通過此OPTIONS業務,nodemon認爲我的index.js已更改並重新啓動nodejs

此外,OPTIONS請求會返回一個成功的請求,返回http 200.但是,沒有任何內容返回到首先發起ajax請求的網頁(這可能是OPTIONS請求後立即發生的,nodejs通過nodemon重新啓動。然後GET請求是重複的,也有200和網頁得到結果

回答

1

的問題是,由於某種原因,我無法捉摸,二Ajax請求製成。第一一個是OPTIONS請求,第二個是我真正想要的GET請求。任何想法爲什麼?

由於您正在進行跨通信來電(例如,從http://localhosthttp://localhost:someport),Same Origin Policy通常不允許這樣做。所以瀏覽器發送一個「pre-flight」OPTIONS請求來查看服務器是否想通過Cross-Origin Resource Sharing來允許呼叫。