0
点赞
收藏
分享

微信扫一扫

【小5聊】Asp.Net Core3.1基础之跨域设置以及设置不对的地方


最近微软的.Net Core平台更新换代速度非常快,还没把2.1整熟悉,就把2.1淘汰了。

目前最新版本已经到了7.0,.net core3.1还在长期维护范围内,估计能用一段时间。

所以,.net core2.1升级到3.1,跨域方法的设置也有所改变

 

1、以下方式设置跨域无效

  • ConfigureServices - 配置服务方法

//===添加跨域组件===
services.AddCors(options =>
{
options.AddDefaultPolicy(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
});

  •  Configure - 配置方法

//开启跨域
app.UseCors();

  • 效果

【小5聊】Asp.Net Core3.1基础之跨域设置以及设置不对的地方_跨域

2、顺序设置

查看官网分析,说是顺序问题,调整好顺序后,发现还算是不行 

3、官方例子

​​点击跳转查看官方的.net core3.1跨域设置方法​​

public class Startup
{
readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
policy =>
{
policy.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});

// services.AddResponseCaching();
services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.UseCors(MyAllowSpecificOrigins);

// app.UseResponseCaching();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}

4、ASP.NET Core 中间件

​​点击查看.net core中间件执行顺序​​

5、CORS策略选项

策略名        

描述说明

AllowAnyOrigin

允许所有来源的CORS请求和任何请求协议(HTTP或HTTPS);

AllowAnyOrigin不安全,因为任何网站都可以向应用程序发出跨域请求

AllowAnyHeader

允许任何请求标头

AllowAnyMethod

允许任何HTTP方法

WidthOrigins

允许特定来源的CORS请求

WithHeaders

允许在CORS请求中发送特定标头

WithExposedHeaders

设置公开的相应标头

AllowCredentials

允许所有来源作跨域请求中的凭据

注意:指定AllowAnyOrigin和AllowCredentials是不安全的配置,可能导致跨站点请求伪造。对于安全应用,如果客户必须授权自身访问服务器资源,请指定准确的来源列表。

6、无效真正原因

根据官网和网上各种对.net core3.1的正确设置,依然跨域无效。

经过仔细排查,方法是控制器构造函数设置依赖注入时没有在前面设置public

【小5聊】Asp.Net Core3.1基础之跨域设置以及设置不对的地方_.net_02

 

举报

相关推荐

0 条评论