c# - 在 .Net Core 中为 WEB API 控制器定义不同的(不同于全局的)CORS 策略
问题描述
我有一个像这样定义的全球 CORS 政策
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// global cors policy
app.UseCors("MyPolicy");
}
我必须指定全局策略,因为我使用的是 SignalR。该策略允许网站的域。此外,我需要为拥有许多不同域的合作伙伴提供数量有限的端点。
如何允许从任何来源访问特定控制器(从全局策略中排除并添加自定义策略)?
解决方案
在 StartUp.cs 你可以配置 corsConfigureService
readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
}
然后在Configure
功能中,您可以配置每个映射的 SignlR 集线器的 cors:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseCors();
...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
//Map each hub and ad RequireCors per hub
endpoints.MapHub<EchoHub>("echo")
.RequireCors(MyAllowSpecificOrigins);
endpoints.MapRazorPages();
});
}
推荐阅读
- python - 用什么来代替 NavigationToolbar2TkAgg?
- node.js - 如果在 ExpressJS 中间件中传递额外的变量会发生什么?
- php - 与 Stackoverflow 相同的文本编辑器用于编写代码 - PHP
- ios - 我得到“错误域=NSURLErrorDomain 代码=-1001”请求超时”。在 iOS 设备上但在 android 上工作正常
- javascript - Slick Slider - 如何在点击时删除特定的幻灯片
- laravel - 将 Laravel 上传到共享主机问题
- java - 如何基于字段对 MarkLogic 9 Optic Java API 的结果进行分区
- mips - MIPS升序冒泡排序到降序
- css - 如何为 gmail 插件编写自定义 CSS?
- angular - 如何使用多个参数在 angular5 中发送 POST?