[英]Cross Domain Request - page content with all scripts executed
标题很好地描述了我的问题。
我尝试执行跨域请求,在该请求中首先执行加载的内容。
因此,我有www.xyz.com页面,该页面通过ajax加载了一些页面内容(例如实时行情自动收录器),我想在自己的文件中使用此内容。 由于Php无法执行任何操作,因此我想执行jquery get请求,但无法弄清楚如何同时获取两者,跨域请求和执行的javascript。
提前致谢。
更新:
例如,我尝试了以下代码:
function requestCrossDomain( site, callback ) {
if ( !site ) {
alert('No site was passed.');
return false;
}
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=?';
$.getJSON( yql, cbFunc );
function cbFunc(data) {
if ( data.results[0] ) {
data = data.results[0];
if ( typeof callback === 'function') {
callback(data);
}
}
else throw new Error('Nothing returned from getJSON.');
}
}
requestCrossDomain('http://www.google.com', function(results) {
//htmlcode = eval(results);
htmlcode = results;
$('#container').html(htmlcode);
});
如果您绝对必须使用AJAX来抓取文件,然后尝试执行该文件,则可以使用以下代码进行操作:
eval(ajaxResponseText);
执行此操作的另一种方法是利用data
URI方案从XHR生成标签。
var script = document.createElement("script")
script.src = "data:text/javascript;charset=utf8," + encodeURIComponent(ajaxResponseText);
document.body.appendChild(script);
编辑
现在有一个例子可以说明您的问题,我必须修改答案。
由于跨域攻击的普遍性和严重性,您不能在几乎所有浏览器上都使用ajax进行跨域请求而不遵守CORS规范。 跨源资源共享规范允许您向其他源发出ajax请求,只要新源允许。 如果无法正常使用,则JavaScript控制台可能是查找错误的好地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.