关于WebApi 跨域问题的解决的方式

最近在作WebApi 进行开发的时候 一直会遇到跨域方面的问题那么如何进行跨域问题其实很是的简单。javascript

1.一直在使用WebApi的时候老是遇到跨域的问题 那么 什么是跨域?跨域,指的是浏览器不能执行其余网站的脚本。它是由浏览器的同源策略形成的,是浏览器对javascript施加的安全限制。java

注:解决web API跨域其实比较简单,若是能够的话,以下的修改header便可,可是仍是存在不少陷阱。首先必须保证作的更改API从新发布新的文件覆盖原有文件。咱们一直调不通,就是由于发布文件中的配置并无发生改变。另外使用Ajax调用的时候不能添加ContentType的配置。
同时使用服务端的CORS和客户端jQuery.support.cors = true;就能够解决全部的问题了。
另一个Get和Post以外的HttpMethod我是用参数传进去的,由于有些浏览器不支持。web

有的就是 CORS 跨域ajax

让mvc  或者 webapi 支持CORS跨域的配置是:
在system.webServer节点上添加
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Max-Age" value="30"/>
<add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS"/>
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
</customHeaders>
</httpProtocol>
api

2. 服务端须要进行添加跨域

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials","true");浏览器

 

客户端的jQuery:
$.ajax({
...
xhrFields: { //容许跨域访问是添加cookie
withCredentials: true
},
...
安全

 

在作Web开发中,经常会遇到跨域的问题,到目前为止,已经有很是多的跨域解决方案。
经过本身的研究以及在网上看了一些大神的博客,写了一个Demo
首先新建一个webapi的程序,以下图所示:cookie

相关文章
相关标签/搜索