關於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

相關文章
相關標籤/搜索