Azure 代理,请求 IIS 托管 API 时出现 CORS 错误
Posted
技术标签:
【中文标题】Azure 代理,请求 IIS 托管 API 时出现 CORS 错误【英文标题】:Azure Proxy, CORS error when request IIS hosted API 【发布时间】:2020-10-12 13:27:33 【问题描述】:我在 IIS 中托管了一个 WebAPI,现在因为我需要从任何地方访问我的 API,我创建了一个 azure 代理,但每次我使用我的 UI 发出请求时,我都会收到以下错误:
startup.cs
配置服务
services.AddCors(options =>
options.AddDefaultPolicy(
builder =>
builder
.SetIsOriginAllowed((string v) => _ = true)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
);
);
配置
app.UseSerilogRequestLogging();
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
endpoints.MapControllers();
);
如果我在 IIS 所在的网络中运行我的前端代码,而不是调用代理调用 API 的本地主机,它就可以正常工作。
【问题讨论】:
【参考方案1】:您需要在 ConfigureServices 中添加mycors
规则。更多详情可以阅读the offical document。
public void ConfigureServices(IServiceCollection services)
services.AddCors(options =>options.AddPolicy("mycors",
p => p.AllowAnyOrigin())
);
services.AddControllersWithViews();
然后在Configure
函数中应用mycors
。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
//*****apply mycors****
app.UseCors("mycors");
//*********************
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
endpoints.MapControllerRoute(
name: "default",
pattern: "controller=Home/action=Index/id?");
);
我解散了我的两个项目。可以看源码,我已经实现了跨域功能。
【讨论】:
抱歉,响应时间太长,但我查看了 corss 错误并注意到当访问代理时,如果代理返回 401 Unauthorized 接收到的消息指的是 cors,即使它不是都是cors错误。因为该消息是协商期间 401 响应的结果。我想我需要重新考虑项目结构。以上是关于Azure 代理,请求 IIS 托管 API 时出现 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何结合调试 Azure 应用服务和 IIS 托管的 WCF?