小5聊Asp.Net Core3.1基础之跨域设置以及设置不对的地方
Posted 小5聊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小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();
- 效果
2、顺序设置
查看官网分析,说是顺序问题,调整好顺序后,发现还算是不行
3、官方例子
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 中间件
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基础之跨域设置以及设置不对的地方的主要内容,如果未能解决你的问题,请参考以下文章
小5聊IIS部署.net core3.1 - webconfig错误
小5聊IIS部署.net core3.1 - webconfig错误
小5聊Asp.Net Core 2.1基础之部署在IIS上接口请求超时解决方法