dotnet core 之 CORS使用示例
2024-09-03 17:00:33
这里列举几个经过验证的可用的CORS使用示例,
方便在需要的时候可以直接使用
示例1
#region snippet2
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
//1.可用
//builder.WithOrigins("http://example.com",
// "http://www.contoso.com",
// "http://localhost:65317"); builder.AllowAnyOrigin(); //2.可用 });
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
#endregion #region snippet3
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
} app.UseCors(MyAllowSpecificOrigins); app.UseHttpsRedirection();
app.UseMvc();
}
#endregion
这种比较常见,即在ConfigureServices中添加中间件及定义其策略;而在Configure中把中间件设置到管道中
示例2
public void ConfigureServices(IServiceCollection services)
{
//services.AddCors(); //经试验,此句加或者不加,都是可以的 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
} #region snippet2
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
} // Shows UseCors with CorsPolicyBuilder.
app.UseCors(builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com",
"https://localhost:44375",
"http://localhost:65317");
}); app.UseHttpsRedirection();
app.UseMvc();
}
#endregion
注意,这个示例中,直接在Configure中的app.UseCors中设置的跨域的一些要求,这种写法经试验也是可以的
示例3
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{ builder.WithOrigins("http://example.com",
"http://www.contoso.com", "http://localhost:65317");
}); options.AddPolicy("AnotherPolicy",
builder =>
{
builder.WithOrigins("http://www.contoso.com", "http://localhost:65317")
.AllowAnyHeader()
.AllowAnyMethod();
}); }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
} public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
} app.UseHttpsRedirection();
app.UseMvc();
}
经试验发现,像这种没有在Configure中使用app.UseCors的,应该都属于局部设置跨域的,需要在相应的Controller或者Action方法上,使用注解:
//[EnableCors("AnotherPolicy")] //这种事有名称的策略的注解添加
[EnableCors()] //这种是模式策略的注解添加
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
注意,即使是默认的策略也是需要使用注解进行声明的,否则会跨域错误。默认的策略只是说不用在注解中声明策略名而已
最新文章
- Microsoft Build 2016 Day 1 记录
- Ubuntu 16 安装JDK1.8
- Serial Port Programming on Linux(转载)
- thinkphp发邮件失败原因
- R语言向量
- C#微信公众号开发系列教程四(接收普通消息)
- ThinkPHP讲解(十)——第三方类的引入:以分页为主
- QT添加程序图标及窗口图标
- js中encode、decode的应用说明
- c++ 函数返回指针 及用法
- java学习笔记-继承中super关键字
- 深入浅出Windows BATCH
- Tomcat中Context的配置
- [HMLY]14.对iOS开发中使用MVVM的理解和使用(初级)
- Jarvis OJ- [XMAN]level2/3_x64-Writeup——64位简单栈溢出
- 【转】Linux上vi(vim)编辑器使用教程
- Javascript高级编程学习笔记(25)—— 函数表达式(3)模仿块级作用域
- 006.Ceph对象存储基础使用
- 纯css3无缝滚动
- 【Oracle】Oracle的内外连接