首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提出跨域请求

如何提出跨域请求
EN

Stack Overflow用户
提问于 2013-07-26 06:50:57
回答 2查看 174.3K关注 0票数 35

如您所知,web浏览器的安全性不允许跨域请求的发出。我读了一本书,其中说,只有当您可以将文件放在服务器上(意思是将加载到相同请求域的页面)时,才应该使用XMLHTTPRequest。如果你不能-你应该找个替代方案。

我的问题是

  1. XMLHTTPRequest的跨域替代方案是什么?
  2. ,WebSockets呢?这种技术允许跨域请求吗?

编辑:,我还是不清楚.

例如,我从www.domain1.com提取页面,并需要从www.domain2.com请求javascript。因此,拉出的页面应该包括如下内容:

代码语言:javascript
复制
<script src="www.domain2.com/script.js"></script>

以避免跨域限制。

我可以使用JSONP,请求将类似于:http://ww.domain1.com/?callback=someFunction.js

但是:它不是一样的吗?我只是从另一个域名中提取js!它能避免跨域限制吗?

EN

回答 2

Stack Overflow用户

发布于 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是另一种解决方案,但您可能会认为这是一种攻击。

票数 22
EN

Stack Overflow用户

发布于 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

这种方法更像是一个附加在窗口对象中的代理。这没有什么特别的,但看起来确实是这样的:

代码语言:javascript
复制
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);
}

有关更多信息,请查看以下内容

Make cross-domain ajax JSONP request with jQuery

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17874730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档