是否可以通过jQuery加载方法将我的页面的外国网站加载到我的页面的div
?jQuery加载方法:加载外域?
$('#content').load('http://www.somedomain.com/server/whatever/file.php');
这不适合我!
是否可以通过jQuery加载方法将我的页面的外国网站加载到我的页面的div
?jQuery加载方法:加载外域?
$('#content').load('http://www.somedomain.com/server/whatever/file.php');
这不适合我!
您可能可以使用基于PHP的代理脚本解决@Giorgi描述的安全限制。
proxy.php
<?php
if(isset($_GET['url'])) {
# Get the Referred URL
$raw = file_get_contents($_GET['url']);
# RegExp to Strip All Script tags and/or links with Javascript in them.
$safe = preg_replace('/<script[^>]*>.*<\/script>|[\"\']javascript:.*[\"\']/im' , '' , $raw);
echo $safe;
} else {
echo 'No URL Set';
}
然后使用jQuery的负载动作调用等proxy.php网页?URL = HTTP%3A // www.google.com/
不,preg_replace()
行动只是一个粗略的草案 - 你会想做一些重大的测试和调整,以确保你防止人们以这种方式搞乱你的网站。
你不能因浏览器的安全限制。 使用代理。
由于@Giorgi说,跨站呼叫阻塞常由于安全限制。但是,如果远程站点返回JSONP,呼叫很可能会起作用。
对于其他呼叫,您必须在您自己的网站上的某个页面上呼叫。而这个页面可能是一个代理,它取代了后端请求的url。
$('#content').load('/myproxy.handler?url=http://www.somedomain.com/server/whatever/file.php');
出于安全原因(例如XSS),我不认为通用代理是一个好的解决方案。这可能是一个更好的解决方案: /myproxy.handler?action=GetWhateverData然后代理处理程序知道该URL: – 2010-07-20 07:16:31
是否有可能使用jQuery加载与相同的URL的SUBDOMAIN?如果负载在http://www.mydomain.com上触发,我可以加载http://hello.mydomain.com/hello.php? – matt 2010-07-21 02:20:21
这是可能的,它涉及到设置document.domain =“yourdomain.com”。有关更多信息和示例,请参阅http://www.tomhoppe.com/index.php/2008/03/cross-sub-domain-javascript-ajax-iframe-etc/。 – 2010-07-21 06:32:40
你的意思是通过搞乱我的网站? – matt 2010-07-21 02:03:08
跨站点脚本 - http://en.wikipedia.org/wiki/Cross-site_scripting。如果在您打电话的第三方页面中出现JavaScript,可能会触发它,就像它来自您的网站一样,这可能会降低安全性。 – 2010-07-21 05:28:58