我在这里有点困惑,也许有人可以提供帮助。
1)Javascript ajax请求问题:我可以使用XMLHttpRequest直接向任何其他网站发出请求 - 而不是原始服务器吗?
2)JQuery ajax请求问题:我可以使用$ .ajax直接向任何其他网站发出请求 - 而不是原始服务器吗?
浏览网页时,我发现了一些关于如何通过XSS(跨站点脚本)禁止此操作的内容,以及解决方法是使用服务器脚本语言和Web服务...但是无论对我来说什么都没关系。
如果有人可以回答,请帮助!
答案 0 :(得分:1)
我认为这里的术语存在混淆。这与XSS无关。您无法在不同域(甚至同一域上的http与https)之间获取javascript信息的原因是由于同源策略,该策略存在以防止可信站点上的会话与不受信任的站点混淆而没有用户的直接干预(例如通过选择访问不同的域)。 XSS是一个完全不同的概念,它与将脚本注入页面以及用户的恶意目的有关。
对于跨域访问,所有希望都不会丢失。 XMLHttpRequest与.ajax()无关,但jsonp允许跨域交换信息。自HTML5以来,postMessage()
也被引入,它允许跨域通信(以及不少于脚本!)
答案 1 :(得分:0)
这个question讨论了同样的问题。你必须获取服务器端其他网站的内容
答案 2 :(得分:0)
您无法跨站点ajax请求。当你使用jquery $ .ajax从不同的域获取数据时,在幕后,jquery会获取url并在文档的标题中附加一个include。
你是对的,出于安全原因这是禁止的。
答案 3 :(得分:0)
jQuery的.ajax()
是一种在一个函数中使用JavaScript的XMLHttpRequest
的简单方法。最后,它只是XMLHttpRequest
。
跨站点脚本(XSS)可以阻止所有跨域请求,但是,您可以使用服务器端解决方案来克服它。
然后就是JSONP,其中 允许JavaScript执行跨站点请求,但仅限于有限的数据集。
答案 4 :(得分:0)
是的,JSONP可以实现。像这样使用它:
$.ajax({
url: 'remote_url',
type: 'post',
dataType: 'jsonp', //This does the trick
success: function(remoteData){
//Use remoteData here. Note it's already json parsed, so it's a javascript object
}
});
希望这有帮助
答案 5 :(得分:0)
最后,如果您呼叫的服务器已实施CORS并允许您的域名调用
,您可以制作跨域ajax答案 6 :(得分:0)
1)Javascript ajax请求问题:我可以使用XMLHttpRequest直接向任何其他网站发出请求 - 而不是原始服务器吗?
不,您尝试连接的域中的服务器必须接受cross-domain AJAX;否则,访问此数据的唯一方法是使用服务器上的一个页面,该页面将向访问者代理请求的数据。
2)JQuery ajax请求问题:我可以使用$ .ajax直接向任何其他网站发出请求 - 而不是原始服务器吗?
jQuery AJAX技术实际上是原生XMLHttpRequest的包装器,所以如果普通的XMLHttpRequest工作,jQuery也应如此。