【小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、官方例子

点击跳转查看官方的.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

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值