ASP.net web API启用跨域和凭据IIS部署被CORS问题阻止

lx0bsm1f  于 2023-11-19  发布在  .NET
关注(0)|答案(1)|浏览(195)

我在访问我在IIS中部署的API时遇到问题。尽管我在程序中有此代码。cs

builder.Services.AddCors(options =>
{
   options.AddPolicy("AllowCors", policy =>
   {
      policy.WithOrigins("https://tauri.localhost/", "http://localhost:5173")
         .AllowAnyHeader()
         .AllowAnyMethod()
         .AllowCredentials();
   });
});

字符串
我仍然得到这个错误

Access to XMLHttpRequest at 'http://localhost:8001/UserAuth/Login' from origin 'http://localhost:5173' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost:5173, http://localhost:5173', but only one is allowed.


我已经在我的web.config文件中有了这个错误,即使我把我放在program.cs中的origins放在<add name="Access-Control-Allow-Origin" value="https://tauri.localhost/, http://localhost:5173">中,我仍然得到同样的错误。

<configuration>
   <location path="." inheritInChildApplications="false">
      <system.webServer>
         <httpProtocol>
            <customHeaders>
               <add name="Access-Control-Allow-Origin" value="*" />
               <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
               <add name="Access-Control-Allow-Headers" value="Content-Type, soapaction" />
            </customHeaders>
         </httpProtocol>
         <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
         </handlers>
         <aspNetCore processPath="dotnet" arguments=".\server.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
      </system.webServer>
   </location>
</configuration>


我不知道我是不是错过了什么。这个API也可以访问数据库sql server。
[编辑]我观察到,每当控制器必须访问SQL Server数据库时。它会抛出has been blocked by CORS policy错误。

0mkxixxg

0mkxixxg1#

您遇到的CORS问题似乎是由重复的CORS设置引起的。ASP.NET Core管道和IIS都在向您的响应添加CORS标头,这将导致重复的标头。这将被拒绝。
绝对只在一个地方处理CORS。我建议只在你的program.cs中处理CORS。
如果您还没有,请确保将CORS放入startup.cs文件中。
比如说:

public void Configure(IApplicationBuilder app)
{
    app.UseCors("AllowCors");
}

字符串
让我知道这是否解决了你的问题,或者如果你得到一个不同的错误

相关问题