分享一下最近用jQuery跨域请求的经历,
希望能给大家一些关于这个方案的概念和资料。
该部分包括客户端和服务器端,(如果服务器不在自己手上,那么还是考虑通过自己的服务器转发请求吧)
1.原本的代码很简单。。如果是同域名什么问题都没有 (有兴趣的朋友可以尝试在自己的服务器上运行以下代码)
$.ajax({ url: "http://www.google.com/",//不同域名,而且google 没有允许第三方提交所以会出错 cache: false,0)">//data: params, dataType: 'json',success: function (data) { console.log(data); },error: function (e) { alert(e.statusText); } })
嗯,我的默认浏览器是Chrome, 上去一跑。。。当然不能用。。。什么都还没做呢,就想做跨域访问这么危险的事情
2.在服务器端做点手脚,
HttpContext.Current.Response.AddHeader(Access-Control-Allow-Origin*"); 可以设置为详细的地址
3. 好了现在Chrome中的Get已经可以运行了,依葫芦画瓢开发了Post方法。。。。发现Post不能用。。。。- -# 真是不顺利啊
在Fiddler中发现客户端提交的是OPTIONS的请求。。。。恩。。。。。那就加一段逻辑处理OPTIONS
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*"); // 可以设置为详细的地址 if (HttpContext.Current.Request.HttpMethod == "OPTIONS") // 加点逻辑 { HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods","POST,GET,OPTIONS"); HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers","Content-Type,Authorization,Accept,X-Requested-With"); HttpContext.Current.Response.End(); }