如果我正确理解了这个问题,由于您遇到的域限制,您可能无法单独使用 Javascript 来完成。但是,如果您对使用 shell 脚本或任何脚本语言有一定的了解,那应该没问题,您需要做的就是调用古老的 curl。
PHP 中的示例:
<?php
$url = "http://www.example.com/index.html";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
$fp = curl_exec($ch);
curl_close($ch);
?>
差不多就是这样。您在 $fp 变量中有实际的 HTML 代码。所以,总而言之,我要做的是向 PHP 编写一个小的 Javascript Ajax 函数,该函数执行 curl,然后通过 echo 将 $fp 变量返回给 Javascript 回调,然后可能将其插入到文档中(使用 innerHTML 或DOM)和 bam,你可以访问所有的东西。或者你可以只用 PHP 解析它。无论哪种方式,如果您通过 curl 进行操作,应该可以正常工作。希望有帮助。
编辑:经过一番思考,我似乎记得 Safari 删除了 localhost 的跨域限制。在研究了更多之后,我找不到任何支持我的这个理论的文档,所以我挖得更深一点,找到了一个更好(虽然更黑客)的方法来通过 Apache 完成这整个混乱,如果你正在使用它(哪个你可能是)。
Apache 的 mod_proxy 将接受“/foo”之类的请求,并将请求通过隧道传送到某个远程目标,例如“<a href="http://dev.domain.com/bar" rel="nofollow noreferrer">http: //dev.domain.com/bar”。最终结果是您的 Web 浏览器认为您已经调用了http://localhost/foo,但实际上您正在从远程服务器发送和检索数据。安全隐患已解决!
例子:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
假设我想访问http://dev.domain.com/remote/api.php上的文件。您可以将以下所有内容放入 a 中:
# start mod_rewrite
RewriteEngine On
ProxyRequests Off
<Proxy>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /apitest/ http://dev.domain.com/remote/api/
ProxyPassReverse /apitest/ http://dev.domain.com/remote/api/
RewriteRule ^/apitest/(.*)$ /remote/api/$1 [R]
来源
更多编辑:
看到你想如何避免整个服务器设置的事情,我在 Safari (Mac) 上使用 IFRAME 试了一下,它工作,至少对于我尝试过的域:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
</head>
<body>
<iframe src="http://www.stackoverflow.com/"></iframe>
</body>
</html>