如何从javascript发出跨域请求

时间:2016-06-06 12:54:36

标签: javascript cross-domain



var http = new XMLHttpRequest();
var url = "http://example.com/";
http.crossDomain = true;
http.withCredentials = true;
http.open("GET", url, true);

http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send();
console.log(http.responseText);




当我尝试从代码中看到的javascript执行跨域请求时,它会向我抛出错误No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:8000'因此不允许访问。我怎么能解决这个问题,因为我不能继续解决JSONP问题。有没有其他解决方案我可以解决它。而且,由于它是第三方服务器,我无法控制服务器端。

2 个答案:

答案 0 :(得分:1)

无法使用纯客户端代码读取数据。

您需要从服务器发出请求,并让客户端代码从 服务器获取数据。

所述服务器将与托管JS的页面具有相同的来源,或者它将是使用CORS授予您的源的权限的服务器。

答案 1 :(得分:0)

问题是客户端而不是服务器抛出此请求。 解决此问题的一种方法是使用代理例如 PHP代理,以便您实际通过服务器脚本检索数据(例如使用cURL)并生成JS脚本请求您的服务器页面而不是跨服务器页面。

PHP网络代理已经存在,查看herehere可能会让您了解如何实现您的目标。

除了要求其他服务器的所有者将您列入白名单之外,没有办法只使用JS,这在大多数情况下确实不太可能。