我的网站上有一个页面(比方说在域 A 上),我想从另一个页面(比如在 域 B上)将更多内容拉入其中强>.默认情况下,出于安全原因,浏览器会阻止此功能。
据我所知,有几种方法可以做到这一点。
- CORS:据我了解,此方法需要服务器和客户端的贡献。服务器需要在其响应中添加 header (即 Access-Control-Allow-Origin: [DOMAINS],自 http://enable-cors.org/server.html 起)。另一方面,客户需要调整他们的要求(例如http://www.html5rocks.com/en/tutorials/cors/)。
- 如果使用 jQuery,有一个使用 YahooAPI 的小插件(即 http://james.padolsey.com/snippets/cross-domain-requests-with-jquery/ )。这样做的好处是客户端可以自己使用它从其他域获取页面。问题是 Yahoo 限制了每个 IP 每小时的请求数量,并且对于商业用途需要 Yahoo 的许可。
- 我也读过有关 JSONP 的内容,但我没有深入研究。
我的问题是:是否还有我可能忽略的其他可能更好的选择?
郑重声明,我正在使用的网站是一个巨大的商业网站,每天有数百万用户。
最佳答案
您可以执行 JSONP、允许 CORS 并使用纯 JSON、使用 DIY JSONP 包装器或使用 JSONP 代理服务。以下是详细的解决方案:JSONP with remote URL does not work
在您的情况下,最简单的选择是推出您自己的 JSONP 代理服务。这是一个演示准系统 PHP 包装器,如果您获取 JSON 字符串,则可以通过 CORS。与 Yahoo 的 YQL 不同,没有捕获,没有限制。
<?php
$callback = isset($_GET["callback"]) ? $_GET["callback"] : "?";
$json = file_get_contents('http://somedomain.com/someurl/results.json');
header('Access-Control-Allow-Origin: *');
header("Content-type: application/json");
echo $callback . "(" . $json . ");";
?>
关于javascript - 如何使用 JavaScript 加载跨域页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29629624/