我想构建一个从另一台服务器调用的ASP.NET服务,但它不允许我访问该服务。
答案 0 :(得分:5)
您只需要在startup.cs中插入此代码:
app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
请记住在上面使用它:
app.UseMvc()
玩得开心!
答案 1 :(得分:3)
您应该查看this article以查看所有可用选项:
简单设置
public void ConfigureServices(IServiceCollection services) { services.AddCors(); }
使用中间件进行设置
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// Shows UseCors with CorsPolicyBuilder.
app.UseCors(options => options.WithOrigins("http://example.com").AllowAnyMethod());
// other code may come here
}
MVC项目中的CORS
行动级别
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
}
控制器级别
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
}
以及许多选项,例如允许的来源,允许的HTTP方法,公开的响应标头,如何处理凭据。
尝试自行设置并遇到特定的问题,如果您遇到问题。
答案 2 :(得分:2)
请务必安装nuget package
Install-Package Microsoft.AspNetCore.Cors
配置startup.cs
,类似于以下内容:
public class Startup
{
public Startup(IHostingEnvironment env)
{
//...
}
public void ConfigureServices(IServiceCollection services)
{
//...
//Register Cors policy
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
services.AddMvc();
//...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//...
app.UseCors("CorsPolicy"); //Make sure the policy name matches with the provided above
//...
}
}
答案 3 :(得分:0)
您可以在Configureups服务方法的“启动”类中配置CORS `
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
}
将其应用于每个请求
public void Configure(IApplicationBuilder app)
{
app.UseCors("MyPolicy");
}
您可以在Controller或Method上应用,例如,添加属性
[EnableCors("MyPolicy")]