11

我写了一些代码来处理CORS我的Web Api.Net Core)。这些代码可以在我的本地和测试服务器(Azure 应用服务)上完美运行,但不能在生产环境(Azure 应用服务)上运行。它给出了错误-

XMLHttpRequest 无法加载http://myapiproduction.co/token。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://myuidashboard.co ”。

我在appsettings.Production.json. *我从CORSAzure 应用服务(生产环境)部分删除了所有值 ( )。

在此处输入图像描述

当我们从应用服务的 CORS 部分删除所有内容时,我们的代码逻辑应该可以工作,因为一次只有一个中间件可以工作,要么是应用服务的 CORS 中间件,要么是我们的 Web Api 代码逻辑。

Web API ( Startup.cs)-

var allowedOriginsArr = Configuration["AppSettings:AllowedOrigins"].Split(','); //Example- "http://myuidashboard.co"
services.AddCors(options =>
{
  options.AddPolicy("AllowAllCorsPolicy",
    builder => builder.WithOrigins(allowedOriginsArr)
               .WithMethods("GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS")
               .AllowAnyHeader()
               .WithExposedHeaders("X-Auth-Token")
               .AllowCredentials());
});

所以,我的问题是 - 我还需要做任何其他设置来禁用 Azure 应用服务的 CORS 中间件吗?我想CORS完全通过代码(Api 逻辑)来控制。

4

3 回答 3

0

我认为没有任何额外的设置可以从 Azure 应用服务端显式禁用它。Microsoft 本身建议使用您的 CORS 实用程序而不是内置的 -请参阅此处

文档提供的注释 -

Don't try to use App Service CORS and your own CORS code together. When used together, App Service CORS takes precedence and your own CORS code has no effect.
于 2021-03-04T05:53:47.027 回答
0

尝试使用 Kudu 或命令行检查关联的 appservice 中已部署的 appsettings.json。可能是未应用应用程序设置。

关联应用服务 > 开发工具下 > 高级工具(Kudu)

关联的应用服务 > 在开发工具下 > 控制台

于 2021-06-28T23:52:53.083 回答
-2

我的 azure 站点是在 vb.net 中编程的,但最终我不得不这样做,然后它才起作用:

Dim strMethod As String 

strMethod = Request.HttpMethod.ToUpper

If InStr(strMethod, "OPTIONS") Then

   Response.Flush()

End If
于 2019-05-09T23:37:36.170 回答