2016-11-17 20 views
2

我想從客戶端頁面執行CORS請求。由於我是網絡開發新手,雖然我正在使用角度來開發特定的應用程序,但我開始研究這個問題,並且我認爲我應該先用普通的JavaScript來做。在enable-cors.org有一張表格,表示Firefox(第46版和更新)和Chrome(第51版和更新版本)都支持CORS。 在html5rocks.com他們說,你可以檢查是否有瀏覽器通過檢查所創建XMLHttpRequest對象有一個「withCredentials」屬性支持CORS(讓我們離開IE出了它)。所以我寫了「withCredentials」屬性創建一個XHR對象和檢查,並加載在控制檯上的結果很簡單的功能,我通過HTML按鈕調用函數,就像這樣:xhr對象在Firefox和Chrome中沒有「withCredentials」屬性

'use strict'; 
 

 
var corsPostRequest = function(){ 
 

 
    console.log("test"); 
 
    
 
    var xhr = new XMLHttpRequest(); 
 
    var lookInside = xhr.hasOwnProperty("withCredentials"); 
 
    console.log(lookInside); 
 
    
 
    if (xhr.hasOwnProperty("withCredentials")) { 
 
     console.log("we \'re good to go.."); 
 
    } 
 
};// end of corsPostRequest
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <script src="javascripts/corsTest.js"></script> 
 
</head> 
 
<body> 
 
    <button id="submit_entry" onclick="corsPostRequest()">POST</button> 
 
</body> 
 
</html>

我越來越控制檯的結果是:

測試

這意味着xhr對象沒有「withCredentials」屬性,因此cors不可能(?)。我已經在Firefox(v 50.0)和Chrome(v 54.0.2840.71)中嘗試了這一點,但我得到了同樣的結果,儘管兩個瀏覽器都應該這樣做,至少根據我上面提到的鏈接。所以我想問:

1)這可能是Windows 10瀏覽器(我正在操作)的問題? 2)有沒有辦法在這些情況下做Cors? 3)angularjs是否有辦法解決這個問題?

在此先感謝。

+2

只是分配它。所有現代瀏覽器都支持cors。 –

回答

1

xhr.hasOwnProperty(「withCredentials」)

這裏你的錯誤是,你是假設它是自己的財產,而不是一個getter/setter方法對從原型繼承。

"withCredentials" in xhr // true 
+0

非常感謝。這個邪惡的JSLint建議我應該使用hasOwnProperty來代替,並且我沒有關注這個問題。我以爲我從JSLint看到了足夠的... –