.net MVC下跨域Ajax请求(CORS)

时间:2022-10-28 21:13:46

二、CROS (Cross-origin Resource Sharing)

  CROS相当于一种协议,由浏览器、服务端共同完成安全验证,进行安全的跨域资源共享。对于开发人员来说就跟在本站AJAX请求一样,浏览器会自动判断是否使用CROS。

  客户端:

 <script type="text/javascript">
function TestCors() {
$.ajax({
type: "GET",
url: "http://hamp-sz-0104/MVC/Books/Test",
dataType: "json",
success: function (obj) {
alert(obj.Name);
}
})
}
</script>

  服务端:

     public class BooksController : Controller
{
public ActionResult Test()
{
return Json(new { Name = "CORS" },JsonRequestBehavior.AllowGet);
}
}

  服务端配置:需要给允许CORS请求的消息设置Access-Control-Allow-Origin header值,或使用“*”授权任何域名可访问

 <system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:3794"/>
</customHeaders>
</httpProtocol>
</system.webServer></configuration>

  若无配置,浏览器会收到如下错误提示:SEC7120: [CORS] 原点“http://localhost:3794”未在“http://hamp-sz-0104/MVC/Books/JsonpTest”的 cross-origin 资源的 Access-Control-Allow-Origin response header 中找到“http://localhost:3794”。