Asp.NetCore跨域配置

引言

能看到这篇文章的对于配置跨域的作用应该都有了解,这里就只说在asp.net core 6下如何配置。

跨域基础配置

1. 添加跨域配置

  1. 添加默认跨域配置
builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(
                      builder =>
                      {
                          builder.WithOrigins("http://example.com",
                                              "http://www.contoso.com");
                      });
});
  1. 添加指定配置名称的跨域配置
builder.Services.AddCors(options =>
{
    options.AddPolicy("cors1",
                      builder =>
                      {
                          builder.WithOrigins("http://example.com",
                                              "http://www.contoso.com");
                      });
});

2. 启用跨域配置

  1. 添加的是默认跨域配置
app.UseCors();
  1. 添加的是指定名称的跨域配置
app.UseCors("cors1");

设置允许的来源

这个细讲起来挺麻烦的,不如直接看官方文档。所以就粗略的写一下。
在Asp.NET Core中,可以针对请求源的域名、请求头、http请求方法来判定是否允许跨域,如下代码则是允许所有来源、所有请求头、所有http方法进行跨域访问

//添加跨域
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowAll",
        builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
});

特殊情况

signalr的跨域配置

为signalr配置跨域时,需要允许Credentials,但.AllowCredentials().AllowAnyOrigin()不可同时调用,所以要用以下方法进行配置

services.AddCors(options =>
{
    options.AddPolicy("AllowSignalR",
              builder =>
              {
                  builder
                  .SetIsOriginAllowed(_ => true)
                  .AllowAnyMethod()
                  .AllowAnyHeader()
                  .AllowCredentials();
              });
});

链接

  1. 跨域官方文档:在 ASP.NET CORE 中 (CORS) 跨 ASP.NET Core
posted @ 2022-01-07 21:09  frisktale  阅读(531)  评论(0)    收藏  举报