两个网站之间需要跨域访问,怎么办?
1、在Web.config里面添加允许跨域的语句
但是这样做,就会产生很大的系统漏洞,因为所有的方法都会被跨域请求。如果在Access-Control-Allow-Origin设置固定的允许跨域请求的地址,可由于网站会部署到不同的网址和地址,这个节点会被经常修改,对于运维来说就比较困难了。
2、使用jsonp。
这个jsonp确实可以解决跨域问题,但是对action只能要求成void的。而且还需要设置callback和callback的参数格式,否则即使请求成功,也只能走error方法。
//jsonp激活序列号 public void JsonpActive(string code) { //Response.Headers.Add("Access-Control-Allow-Origin", "*"); //HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*"); var result = true; Response.Clear(); Response.Write(Request.QueryString["callback"] + "({\"result\":\"" + result + "\"})"); Response.End(); }
3、给单个action设置跨域请求,支持获取页面
$(function () { $("#qwer").click(function () { var code = $("#Code").val(); //设置浏览器支持跨域 jQuery.support.cors = true; $.ajax({ type: "get", url: "http://localhost:50739/SalesOrder/Check, crossDomain: true,//设置浏览器支持跨域 success: function (data) { alert("success " + data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("error"); } }); }) });
在action里面设置单独的跨域请求 //允许跨域 HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");