如果我有服务器:
www.server1.com
从以下位置加载脚本:
www.server2.com/script-to-load.js
script-to-load.js 可以对 www.server2.com 进行 ajax 调用吗?
谢谢。
最佳答案
是的。可以通过三种方式做到这一点:
CORS:使用此方法,将 header 添加到 www.server2.com 以允许从 www.server1.com 进行访问。这是在 JavaScript 中执行跨域脚本的“正确”方法。请参阅:http://www.w3.org/TR/cors/
使用服务器端“代理”:使用此方法,www.server1.com 上的服务器端脚本访问 www.server2.com 上的文件并返回响应.这是一种从您控制的服务器上的网站访问不受您控制的服务器上数据的实用方法。下面是一个示例脚本。
JSONP:此方法利用了
script
标记不受跨域限制的事实。请参阅:http://en.wikipedia.org/wiki/JSONP
跨域脚本的示例 PHP“代理”脚本:
执行选项 2 的示例 PHP 脚本是:
<?php
ini_set("user_agent", $_SERVER['HTTP_USER_AGENT']); // temporarily override CURLs user agent with the user's own
echo file_get_contents($_REQUEST["www"]);
?>
将此脚本放在 www.server1.com/proxy.php 并调用 http://www.server1.com/proxy.php?www=http://www.server2.com/ajax.js .脚本会返回 www.server2.com/ajax.js 的内容,从而绕过跨域限制。
关于javascript - 远程脚本可以向托管脚本的服务器发出请求吗?同源政策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11586204/