ASP.NET MVC中設(shè)置跨域訪問問題
1、什么是跨域請求
js禁止向不是當(dāng)前域名的網(wǎng)站發(fā)起一次ajax請求,即使成功respone了數(shù)據(jù),但是你的js仍然會報錯。這是JS的同源策略限制,JS控制的并不是我們網(wǎng)站編程出現(xiàn)了問題??蛻舳耍ňW(wǎng)頁)和后臺編程都可以有效解決這個問題??蛻舳丝梢酝ㄟ^JSONP來完成跨域訪問;在ES6中為了解除同源策略問題,想出一個辦法:當(dāng)被請求網(wǎng)站為響應(yīng)頭respone添加了一個名為Access-Control-Allow-Origin的header,設(shè)置其值等于發(fā)起請求網(wǎng)站的域名地址的話,這次請求被視為允許。其中Access-Control-Allow-Origin的值為*時表示允許所有網(wǎng)站的跨域請求。
本文主要探索如何在后臺代碼中設(shè)置允許跨域訪問。
2、在action中添加代碼
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
3、在webconfig添加應(yīng)用程序配置:
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Methods" value="*" /> </customHeaders> </httpProtocol> </system.webServer>
4、添加action過濾器
不論webapi還是mvc的action,我們都可以重寫ActionFilterAttribute過濾器的OnException方法來在action執(zhí)行完成之后,為http響應(yīng)添加header頭;OnException方法意為在action執(zhí)行完成之后進(jìn)行的操作。這個過濾器可以添加在action或者controller上,但是這樣就要為每一個action或者controller打上這個過濾器,這里將我們重寫的action過濾器添加在了全局的過濾器中,這樣,每一個action在執(zhí)行完成之后都會觸發(fā)這個過濾器,這里以webapi為例。新建類:
/// <summary>
/// 跨域
/// </summary>
public class Cores:ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin","*");
}
}
在webapiconfig中添加。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服務(wù)
// 將 Web API 配置為僅使用不記名令牌身份驗證。
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API 路由
config.MapHttpAttributeRoutes();
config.Filters.Add(new Cores());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
總結(jié)
以上所述是小編給大家介紹的ASP.NET MVC中設(shè)置跨域訪問問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
利用ASP.NET MVC+Bootstrap搭建個人博客之praise.js點贊特效插件(二)
這篇文章主要介紹了利用ASP.NET和MVC+Bootstrap搭建個人博客之praise.js點贊特效插件(二)的相關(guān)資料,需要的朋友可以參考下2016-06-06
Visual Studio 2015 配置 Opencv3.2的圖文詳解
這篇文章主要介紹了Visual Studio 2015 配置 Opencv3.2的圖文詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
ABP(現(xiàn)代ASP.NET樣板開發(fā)框架)系列之二、ABP入門教程詳解
ABP是為新的現(xiàn)代Web應(yīng)用程序使用最佳實踐和使用最流行工具的一個起點??勺鳛橐话阌猛镜膽?yīng)用程序的基礎(chǔ)框架或項目模板。接下來通過本文給大家詳細(xì)介紹ABP入門教程,感興趣的朋友一起看看吧2017-10-10
ASP.NET Core2靜默獲取微信公眾號的用戶OpenId實例代碼
這篇文章主要給大家介紹了關(guān)于ASP.NET Core2靜默獲取微信公眾號的用戶OpenId的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12

