我有一些javascript代码会向api发出请求。并且请求吐出xml作为响应。我正在使用XMLHTTPRequest来获取xml。
在Firebug中我注意到它失败了,并引发异常。我不确定发生了什么。这是Firebug中的一个演示,您将在控制台窗口中注意到它将失败。
这是我运行的代码,
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", configgg, false );
xmlHttp.send()
当我在线搜索线索时,有一个关于从其他域请求内容无法解决问题的主题,问题是服务器端。如果是这样的话我将如何打开它(允许其他域生成xmlhttprequests)? API位于我们的某个服务器上,但我们正在从其他域进行请求测试以使其正常工作。
答案 0 :(得分:1)
Same_origin_policy不允许您跨域拨打电话。您可以在使用新浏览器时查看CORS,或者需要使用代理,或者需要开始使用JSONP。
设置浏览器的安全性以允许跨域调用,如果用户使用它上网,则会遇到麻烦。
答案 1 :(得分:1)
这里的每个人都会喜欢的答案将涉及同源政策,该政策不允许跨域调用。但我经历过类似的事情,我知道这不是你想要的答案。
我知道如何在Internet Explorer中使用MSXML ServerXMLHTTP对象执行此操作,但就在其他浏览器中尝试此操作而言,请尝试执行此操作:
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", configgg, false );
xmlHttp.setRequestHeader("Host", configgg);
xmlHttp.send();
答案 2 :(得分:1)
正如其他答案中所建议的那样,您尝试从其他域访问某些内容的原因是脚本失败的原因。
要解决此问题,您可以通过加载一个回显API网址内容的本地PHP脚本来绕过javascript限制。
答案 3 :(得分:0)
我认为它失败的原因是因为当你使用send
方法但不包括任何参数时,你必须告诉它null
,如下所示:
xmlHttp.send(null);
其他一些方法也会发生这种情况(如果你没有将getComputedStyle
作为第二个参数,null
也会失败)。
答案 4 :(得分:0)
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET','baselead.xml',false);
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.send('');
你必须使用'baselead.xml'qoute('')它适用于我的chrome