xhr对象没有" withCredentials" Firefox和Chrome中的属性

时间:2016-11-17 12:26:03

标签: javascript angularjs google-chrome firefox cors

我想从客户端页面执行CORS请求。由于我是网络开发的新手,虽然我使用角度来进行特定的应用程序开发,但我开始研究这个问题,我认为我应该先用普通的javascript来完成。在enable-cors.org中,有一个表格表明Firefox(第46版和更新版本)以及Chrome(第51版和更新版本)都支持CORS。 在html5rocks.com中,他们说你可以通过检查创建的XMLHttpRequest对象是否具有" withCredentials"来检查浏览器是否支持CORS。财产(暂时离开IE吧)。所以我编写了一个非常简单的函数,它创建了一个xhr对象并检查" withCredentials"属性并在控制台上加载结果,我通过html按钮调用该函数,如下所示:



'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>
&#13;
&#13;
&#13;

我进入控制台的结果是:

测试

这意味着xhr对象没有&#34; withCredentials&#34;财产和因此不可能(?)。我在Firefox(v 50.0)和Chrome(v 54.0.2840.71)中都尝试了这个,但我得到了相同的结果,尽管两个浏览器都应该这样做,至少根据我上面提到的链接。所以我想问:

1)这可能是Windows 10浏览器的问题(我正在操作)吗? 2)在这些情况下,有没有办法做角色? 3)angularjs有办法解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

  

xhr.hasOwnProperty(&#34; withCredentials&#34)

你的错误在于你假设它是一个属性而不是从原型继承的getter / setter对。

"withCredentials" in xhr // true