Lir*_*man 5 c# asp.net-core asp.net-core-2.2
我已将我的项目更新为.net core 2.2,看起来CORS正在制造2.1中没有的问题.
我在这个网址上运行我的应用: http://*:5300
我在以下代码中添加了此代码Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddCors(options =>
options.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyHeader();
}));
services.AddMvc();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseCors(builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyHeader();
});
app.UseAuthentication();
app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,所以我在其上添加[EnableCors]了我的`BaseController"类的属性:
[EnableCors]
[Authorize]
[Produces("application/json")]
[Route("api/[controller]")]
public class BaseController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)
但我仍然收到此CORS错误:
来自' http://192.168.15.63:5302 '的' http://192.168.15.63:5301/api/permissions/UI ' 访问XMLHttpRequest 已被CORS策略阻止: 对预检请求的响应未通过访问控制检查: 当请求的凭据模式为"包含"时,响应中的"Access-Control-Allow-Origin"标头的值不能是通配符"*". XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制.
我还能做些什么来彻底删除CORS?
当请求的凭据模式为“ include”时,响应中“ Access-Control-Allow-Origin”标头的值不得为通配符“ *”。
你不能同时使用AllowAnyOrigin,并AllowCredentials使用ASP.NET核心,以响应CORS请求时。
CORS策略已阻止从源地址' http://192.168.15.63:5302 ' 访问' http://192.168.15.63:5301/api/permissions/UI ' 处的XMLHttpRequest
此消息表明您的服务器正在侦听http://192.168.15.63:5301,但您的客户端正在从发送请求http://192.168.15.63:5302。由于端口不同,因此来源不同,因此使用了CORS保护。
为了使请求成功,请将您的ASP.NET CORS配置代码更新为以下内容:
builder.WithOrigins("http://192.168.15.63:5302")
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyHeader();
Run Code Online (Sandbox Code Playgroud)
这会将客户端的来源配置为CORS支持-当然,您可以根据需要将其作为配置选项添加到应用程序本身(使用例如appsettings.json)。
在旁边:
调用AddCors并配置命名策略后,没有理由在对的调用中配置相同的策略UseCors-您只需使用以下命令传入您先前配置的策略名称即可AddCors:
app.UseCors("MyPolicy");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4213 次 |
| 最近记录: |