Mur*_*nze 11 c# asp.net-core-mvc .net-core asp.net-core
我想知道如何添加Access-Control-Allow-Origin:*到我的标题中.
我试过这个失败了:
app.Use((context, next) =>
{
context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
return next.Invoke();
});
Run Code Online (Sandbox Code Playgroud)
Mar*_*ery 15
从内部使用app.use(...)和变异是正确的,但重要的是在链中的正确点进行.ASP.NET核心中间件组件可以"短路"(参见ASP.NET核心中间件文档),防止进一步调用中间件,并通过试验它我推断出这样做.在MVC应用程序,那么,这意味着你必须把你的电话之前.context.Response.HeadersStartup.ConfigureUseMvc()app.use(...) app.UseMvc()
换句话说,从模板ASP.NET 2.0的核心应用程序的Visual Studio为您生成开始,要修改Startup.Configure在Startup.cs看起来是这样的:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// Add header:
app.Use((context, next) =>
{
context.Response.Headers["Access-Control-Allow-Origin"] = "*";
return next.Invoke();
});
app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
我尝试了你的代码,它工作得很好......放置是关键:我很确定它需要位于链的早期。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
//app.UseCors(builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
app.Use((context, next) => {
context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
return next.Invoke();
});
app.UseMvc();
app.UseWebSockets();
app.UseSignalR();
}
Run Code Online (Sandbox Code Playgroud)
我们发现 ApplicationBuilder 方法也不一致 - 不清楚处理程序何时交回链(例如UseStaticFiles())以及何时不交回链(UseMvc())。
您没有说明您在什么环境下运行,但如果您打算使用 IIS,那么请不要放弃web.config!url重写模块工作得非常好,并且允许您对所有请求设置出站规则。
这里有一个很好的答案:https ://stackoverflow.com/a/26545975/548664
| 归档时间: |
|
| 查看次数: |
9550 次 |
| 最近记录: |