如何使用Javascript进行CORS请求

时间:2015-01-04 22:37:06

标签: javascript http-headers cors

我正在尝试根据其他服务器上提供的信息制作一个自动填写表单的代码。准确地说:http://services.runescape.com/m=hiscore/index_lite.ws?player=playername

这是我的代码:

var name = document.form.name.value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
    alert(xmlhttp.responseXML);
}
xmlhttp.open("GET","http://services.runescape.com/m=hiscore/index_lite.ws?player="+name,true);
xmlhttp.send();

但Firefox总是显示此错误:

  

阻止跨源请求:同源策略禁止读取http://services.runescape.com/m=hiscore/index_lite.ws?player=drumgun上的外部资源。这可以通过移动re来解决   来源到同一个域或激活CORS。

可能会出现一些语法错误,因为我是用德语翻译的。

然后我尝试使用Firefox使用的相同标题:

var name = document.form.name.value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
    alert(xmlhttp.responseXML);
}
xmlhttp.open("GET","http://services.runescape.com/m=hiscore/index_lite.ws?player="+name,true);
xmlhttp.setRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
xmlhttp.setRequestHeader("Host","services.runescape.com");
xmlhttp.setRequestHeader("DNT","1");
xmlhttp.setRequestHeader("Connection","keep-alive");
xmlhttp.setRequestHeader("Accept-Language","de,en-US;q=0.7,en;q=0.3");
xmlhttp.setRequestHeader("Accept-Encoding","gzip,deflate");
xmlhttp.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
xmlhttp.send();

但是发生了同样的错误..我希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

如果启用了跨源资源共享(CORS),则XlmHttpRequest仅适用于域。如果您可以控制服务器,则启用它的方式如下:http://enable-cors.org/server.html

如果您无法控制服务器,那么您就不走运了。如果它们支持JSONP,您可以通过普通脚本获取信息。

第三个选项,需要您自己的服务器,将设置您自己的域上的代理,然后为您获取相关数据。由于只有浏览器受CORS限制,您可以在服务器上使用您的favirote编程语言获取数据并传递它