【问题标题】:How to make a cross domain request from javascript如何从javascript发出跨域请求
【发布时间】:2016-10-06 02:22:30
【问题描述】:

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' header is present on the requested resource。因此,Origin 'http://localhost:8000' 不允许访问。我怎么能解决这个问题,因为我不相信 JSONP 的解决方案。是否有任何其他解决方案可以解决它。而且我无法控制服务器端,因为它是第三方服务器。

【问题讨论】:

    标签: javascript cross-domain


    【解决方案1】:

    没有办法使用纯粹的客户端代码读取数据。

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

    所述服务器要么与托管 JS 的页面同源,要么使用 CORS 向您的源授予权限。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-02-26
        • 1970-01-01
        • 2018-04-12
        • 2019-09-13
        • 2010-09-22
        • 2019-04-02
        • 2012-12-22
        相关资源
        最近更新 更多