来自客户端脚本的跨域内容使用(安全问题)
我想使用jQuery加载函数加载一些外部内容到我的页面上div。加载方法和本地内容一起工作正常,但是如果您想从域中获得某些内容,则该方法无效。 (它实际上在IE中有安全警告,但拒绝在Chrome中工作)。 jQuery文档说它是正确的,因为跨域内容因安全原因受到限制。如果使用.getJSON方法,我会得到同样的警告。来自客户端脚本的跨域内容使用(安全问题)
OK,之后谷歌上搜索了一下,我发现使用YQL加载的内容非常有趣的方法,我已经尝试了一些例子,像这样:
var request = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo%22&format=json&diagnostics=true&callback=?";
$.getJSON(request, function (json) {
alert(json);
}
);
它真的有效!
我现在不明白的是,http://query.yahooapis.com也是跨域资源,但浏览器(包括IE和Chrome)都能正常工作吗?
有什么区别?我错过了什么?
谢谢
谢谢您的回答,但不幸的是他们两个不回答我的原始问题。
我已经签出re在stackoverflow(我知道我需要做的第一)有关问题,并找到了这种行为的原因。
第一个代码snipset使用AJAX/JSON来检索数据,并且由于同源策略而被允许。但是,对YQL的请求使用JSONP来代替,这没关系。
JSONP是我不知道的东西,这就是为什么我没有失去理智和行为。上JSONP
介绍的信息可以在这里找到: http://ajaxian.com/archives/jsonp-json-with-padding
,你都可以从YQL回来的结果是其中允许跨站点AJAX调用这样的JSON格式。其相同的机制允许您通过JSON与外部网站的Web服务进行通信(即Twitter API)。
细节在这里 - http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/
你可以在外部网站JSON是这样的:
callback({key:value,etc:1})
,并定义
function callback(json) {
..here is processing..
}
不太回答我的问题.. – 2010-07-09 07:40:43
它实际上是JSONP,我发现现在:) – 2010-07-09 07:40:21