这篇SO 帖子列出了许多规避这种策略的方法。
但是,我不知道这些是否适用于您无法访问第二个来源的情况。
特别是这个,第三个答案,您插入一个脚本,该脚本从第二个来源调用脚本。
<script src="http://..../someData.js?callback=some_func"/>
但一般来说,当您在原点一时,这些方法中的任何一种都允许规避……并且需要访问原点二吗?
这篇SO 帖子列出了许多规避这种策略的方法。
但是,我不知道这些是否适用于您无法访问第二个来源的情况。
特别是这个,第三个答案,您插入一个脚本,该脚本从第二个来源调用脚本。
<script src="http://..../someData.js?callback=some_func"/>
但一般来说,当您在原点一时,这些方法中的任何一种都允许规避……并且需要访问原点二吗?
是的,你可以在不控制第二台服务器的情况下绕过同源策略,但如果没有第二台服务器所有者的合作,你就无法做到。通常,就像在您的示例中一样,这是通过与 JSONP 约定合作来完成的。如果不通过第一个服务器将请求代理到第二个服务器,则没有其他方法可以做到这一点。
显然这是不可能的,否则该政策将毫无用处。这完全是为了防止您从第三台主机中提取数据,这正是您想要做的。
请注意,浏览器不知道什么是“私有”本地网络的一部分,什么是“公共”全球互联网的一部分。因此,此策略的存在是为了防止任意 Javascript 代码访问本地网络上的资源。
不,这就是重点。只有当服务器明确允许通过 CORS 或 JSONP 之类的东西时,才能关闭 SOP。
插入小脚本是一种攻击(无论您的意图是否良好)。如果我拥有一个域并且有人这样做,他们将被禁止并向当局报告。
您最接近的方法是使用服务器端代理(即让您的 js 向您的服务器发出请求,而服务器又向第三方发出请求)。