如您所知,web浏览器的安全性不允许跨域请求的发出。我读了一本书,其中说,只有当您可以将文件放在服务器上(意思是将加载到相同请求域的页面)时,才应该使用XMLHTTPRequest。如果你不能-你应该找个替代方案。
我的问题是
编辑:,我还是不清楚.
例如,我从www.domain1.com提取页面,并需要从www.domain2.com请求javascript。因此,拉出的页面应该包括如下内容:
<script src="www.domain2.com/script.js"></script>以避免跨域限制。
我可以使用JSONP,请求将类似于:http://ww.domain1.com/?callback=someFunction.js
但是:它不是一样的吗?我只是从另一个域名中提取js!它能避免跨域限制吗?
发布于 2013-07-26 18:43:01
您可以使用XMLHttpRequest对象提出跨域请求。这是通过所谓的“跨源资源共享”来完成的。请参阅:sharing
简单地说,当向服务器发出请求时,服务器可以使用Access-Control-Allow-Origin头进行响应,这将允许或拒绝请求。浏览器需要检查这个标头,如果允许的话,它将继续执行请求过程。如果没有,浏览器将取消请求。
您可以在这里找到更多的信息和一个实用示例:http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html
JSONP是另一种解决方案,但您可能会认为这是一种攻击。
发布于 2013-07-26 07:05:18
执行跨域AJAX调用。
为了执行JSONP,您的web服务必须支持方法注入。
您的代码看起来很好,如果您的web服务和web应用程序驻留在同一个域中,它应该可以工作。
当您使用$.ajax:'jsonp‘执行dataType时,意味着jQuery实际上在向查询URL中添加一个新参数。
例如,如果您的URL是http://10.211.2.219:8080/SampleWebService/sample.do,那么jQuery将添加http://10.211.2.219:8080/SampleWebService/sample.do
这种方法更像是一个附加在窗口对象中的代理。这没有什么特别的,但看起来确实是这样的:
window.some_random_dynamically_generated_method = function(actualJsonpData) {
//here actually has reference to the success function mentioned with $.ajax
//so it just calls the success method like this:
successCallback(actualJsonData);
}有关更多信息,请查看以下内容
https://stackoverflow.com/questions/17874730
复制相似问题