【发布时间】:2020-12-11 02:32:16
【问题描述】:
我在使用 .Net Core 3.1 的 IIS 服务器上有一个 Web api。
它正在使用http://68.181.207.10:8473的IP和端口
我还有 3 个 Web 应用程序在同一个 IIS 服务器上运行。其中 2 个应用是 .Net 4.7 应用,1 个是 .Net Core 应用。
这 3 个 web 应用程序都使用 web api。
这 3 个应用是:
https://meta.astro.usc.edu(端口 443)
http://old.astro.perl.edu(80 端口)
http://68.181.207.10(80 端口)
我已将 API 设置为使用 COR,在大多数情况下,一切正常,它们连接到 API 没有任何问题。
但有时即使我添加了所有需要的 URL,我仍然会遇到 COR 错误。
在我的 ConfigureServices 方法的顶部,我添加了需要访问的 URL,如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://68.181.207.10:8473", "https://meta.astro.usc.edu", "http://old.astro.perl.edu", "http://68.181.207.10")
.AllowAnyMethod()
.AllowAnyHeader();
});
});
}
然后在我的配置方法中,我添加app.UseCors,如下所示:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseRouting();
app.UseCors(MyAllowSpecificOrigins);
app.UseHttpsRedirection();
app.UseMvc();
}
这是允许这些其他网络应用连接到我的网络 api 的正确方法吗?
CORs 错误似乎是随机的,其来源始终是我的 3 个网络应用程序之一。一个似乎不会导致比另一个更多的错误。
如何防止我仍然收到间歇性 CORs 错误?
谢谢!
【问题讨论】:
-
你写
The CORs errors seem random and the origins are always one of my 3 web apps. One doesn't seem to cause more errors than an another.。但是您在WithOrigins中指定了 4 个站点。我怀疑这里有 http/https 问题。我还看到app.UseHttpsRedirection();在文档中出现在app.UseCors之前,也许也可以看看。 -
@RoarS。我添加了
http://68.181.207.10:8473,这是 Web api 本身的 URL。出于绝望,我添加了它……但它似乎并没有任何帮助。 -
OPTIONS 请求是预检请求。请查找未返回 2XX 的请求。
-
这些请求已通过,应视为应用错误。因此,您可能根本没有任何 CORS 错误。
-
您还需要安装 IIS CORS 模块以进行安装和配置,docs.microsoft.com/en-us/iis/extensions/cors-module/… 以在 IIS 处理 CORS 请求时正确处理边缘情况,而不是您的 ASP.NET Core Web 应用程序。
标签: asp.net-core iis entity-framework-core asp.net-core-webapi .net-core-3.1