欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET MVC中設(shè)置跨域訪問問題

 更新時間:2018年06月28日 09:12:14   作者:GetPower  
這篇文章主要介紹了ASP.NET MVC中設(shè)置跨域訪問問題,需要的朋友可以參考下

1、什么是跨域請求

js禁止向不是當(dāng)前域名的網(wǎng)站發(fā)起一次ajax請求,即使成功respone了數(shù)據(jù),但是你的js仍然會報錯。這是JS的同源策略限制,JS控制的并不是我們網(wǎng)站編程出現(xiàn)了問題。客戶端(網(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)文章

最新評論