XMLHttpRequest可以有参数吗?

时间:2019-06-03 08:48:04

标签: javascript

在寻找解决CORS问题的方法时,我看到许多示例建议在XMLHttpRequest的构造函数中放置一个对象,并将其属性“ mozSystem”设置为true,以便发出请求而不会出现问题。相同的原产地政策。

我已经尝试过了,但是没有用。

我在一台计算机上有一个Web应用程序,在另一台计算机上有一个未经验证的证书的https服务器,我向该计算机发送请求以填充Web应用程序上的表格。 我将请求发送到服务器以获取json形式的对象数组,但是由于请求的发送来源不同,因此失败。 我曾尝试在XMLHttpRequest的构造函数中放置一个属性“ mozSystem”设置为true的对象,但我的IDE告诉我该构造函数不接受参数,但在我看到的示例中,该对象作为构造函数。 当我将该对象作为参数然后调试代码时,它表明属性“ mozSystem”为假,因此它不起作用。

以下是我如何从服务器检索数组的示例:

var array=[];
function getArray(){
var request= new XMLHttpRequest({mozSystem: true});
request.onreadystatechange=function(){
        if(request.readyState===4&&request.status===200){
            array=JSON.parse(request.responseText);
        }
    };
request.open('GET',urlOfTheServer,false);
request.send(null);
}

所以我需要知道将那个对象放到构造函数中是否有任何区别,或者是否有其他方法可以避免从同一原始策略中获取错误。

1 个答案:

答案 0 :(得分:2)

请参见the documentation on MDN

  

Firefox 16向构造函数添加了一个非标准参数

您的IDE表示不需要参数,因为的标准实现没有

mozSystem仅用于“特权应用程序”,这是安装在Web浏览器中运行的应用程序的一种过时方法。


不能使用客户端JavaScript使浏览器忽略证书的信任问题。

只能通过以下方式解决它们:

  • 用没有那些信任问题的证书替换证书
  • 浏览器的用户访问URL(作为视口的主要URL,而不是通过XMLHttpRequest加载的URL),然后单击一系列警告屏幕以将其关闭
  • 浏览器的用户/计算机管​​理员在计算机上安装适当的证书,以便在本地而不是在全局解决信任问题