使用 JQuery/javascript 绕过跨源策略,无法访问远程服务器

Posted

技术标签:

【中文标题】使用 JQuery/javascript 绕过跨源策略,无法访问远程服务器【英文标题】:Bypassing cross origin policy using JQuery/javascript with no access to remote server 【发布时间】:2015-09-05 16:02:55 【问题描述】:

我想使用 javascript 检索以下 JSON:

https://www.gov.uk/api/organisations/skills-funding-agency

如果我进行 JsonP 调用,我会得到:

callback=jQuery1113043552865949459374_1434727982051&_=1434727982052' 因为它的 MIME 类型('application/json')不可执行,并且启用了严格的 MIME 类型检查。

如果我进行 JSON 调用,我会得到:

XMLHttpRequest 无法加载请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'null'。

这有可能吗?我一直在谷歌搜索几个小时没有任何成功。我见过一些 php 解决方案,但理想情况下不想安装 PHP 来执行此操作。

提前致谢!

【问题讨论】:

使用您自己的 PHP 代码创建代理 curl 请求以调用远程站点。然后从你的 JavaScript 调用你的 PHP curl 代理。 【参考方案1】:

如果您不想安装 PHP 来执行此操作,为什么要使用 php 标记?您需要使用像代理 PHP 文件这样的服务器端脚本,它可以读取内容并正确执行。

Proxy.php:

<?php
    header("Content-type: application/json");
    die(file_get_contents($_GET["url"]));
?>

然后这样称呼它:

url: "proxy.php?url=http://gov.uk/blah/blah"

【讨论】:

以上是关于使用 JQuery/javascript 绕过跨源策略,无法访问远程服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用 CORS 过滤器的跨源请求

跨源请求被阻止的 CORS - 使用角度 cli 解决 [仅限开发人员] [重复]

使用 JEST 和 nock 进行测试导致“禁止跨源 null”

使用 PHP 的 CORS(跨源资源共享)

错误:跨源请求块

php 使用PHP和YII进行跨源资源共享