方案一:web
在web.conflg配置文件system.webServer節點中添加如下節點配置ajax
<!--容許 "全部網站" 跨域訪問寫法:-->
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>-json
方案2、 ajax-jsonp請求:跨域
to:jsonp只支持get請求。函數
頁面代碼:jsonp
<script>網站
$.ajax({
url: 'http://localhost:54407/Home/GetJsonpData', //請求的url
dataType: "jsonp", //將請求類型設爲值jsonp
//傳遞給請求處理程序或頁面的,用以得到jsonp回調函數名的參數名(通常默認爲:callback)
jsonp: "callback", //服務端會經過HttpContext.Request["callback"]; 拿到jsonpCallback這個回調函數的名稱
jsonpCallback: "jsonpCallback", //自定義的jsonp回調函數名稱"jsonpCallback",返回的json也必須有這個函數名稱
success: function (json) {
console.log(json);this
},
error: function (xhr, status, error)
{ console.log(xhr); }
});url
</script>blog
後臺代碼:
[HttpGet]
public ActionResult GetJsonpData()
{
string callback = this.Request["callback"];
string data = "{\"msg\":\"hello world \"}";
this.Response.Write(callback + "(" + data + ")");
return new EmptyResult();