当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET MVC中设置跨域访问问题

ASP.NET MVC中设置跨域访问问题

2018年08月05日  | 移动技术网IT编程  | 我要评论

农村婚庆主持词,北京交通路况,便携式高倍放大镜

1、什么是跨域请求

js禁止向不是当前域名的网站发起一次ajax请求,即使成功respone了数据,但是你的js仍然会报错。这是js的同源策略限制,js控制的并不是我们网站编程出现了问题。客户端(网页)和后台编程都可以有效解决这个问题。客户端可以通过jsonp来完成跨域访问;在es6中为了解除同源策略问题,想出一个办法:当被请求网站为响应头respone添加了一个名为access-control-allow-origin的header,设置其值等于发起请求网站的域名地址的话,这次请求被视为允许。其中access-control-allow-origin的值为*时表示允许所有网站的跨域请求。

本文主要探索如何在后台代码中设置允许跨域访问。

2、在action中添加代码

httpcontext.current.response.appendheader("access-control-allow-origin", "*");

3、在webconfig添加应用程序配置:

<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执行完成之后,为http响应添加header头;onexception方法意为在action执行完成之后进行的操作。这个过滤器可以添加在action或者controller上,但是这样就要为每一个action或者controller打上这个过滤器,这里将我们重写的action过滤器添加在了全局的过滤器中,这样,每一个action在执行完成之后都会触发这个过滤器,这里以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 配置和服务
      // 将 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 }
      );
    }
  }

总结

以上所述是小编给大家介绍的asp.net mvc中设置跨域访问问题,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网