gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章ASP.NET MVC中设置跨域访问问题由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、什么是跨域请求 。

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

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

2、在action中添加代码 。

?
1
HttpContext.Current.Response.AppendHeader( "Access-Control-Allow-Origin" , "*" );

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

?
1
2
3
4
5
6
7
8
9
<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为例。新建类:

?
1
2
3
4
5
6
7
8
9
10
11
/// <summary>
/// 跨域
/// </summary>
public class Cores:ActionFilterAttribute
{
   public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
   {
     base .OnActionExecuted(actionExecutedContext);
     actionExecutedContext.Response.Headers.Add( "Access-Control-Allow-Origin" , "*" );
   }
}

在webapiconfig中添加.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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中设置跨域访问问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

原文链接:https://www.cnblogs.com/gdpw/archive/2018/06/28/9236661.html 。

最后此篇关于ASP.NET MVC中设置跨域访问问题的文章就讲到这里了,如果你想了解更多关于ASP.NET MVC中设置跨域访问问题的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com