如何修复 CORS 错误:ASP .NET C# 中的 MethodDisallowedByPreflightResponse

Posted

技术标签:

【中文标题】如何修复 CORS 错误:ASP .NET C# 中的 MethodDisallowedByPreflightResponse【英文标题】:How to fix CORS error: MethodDisallowedByPreflightResponse in ASP .NET C# 【发布时间】:2021-06-25 00:47:53 【问题描述】:

问题

向 ASP.NET Core API 服务器发送 http 请求(尽管我相信这将适用于各种不同的 .NET 样式服务器)我收到 CORS 错误:MethodDisallowedByPreflightResponse。我特别在 PUT 请求中收到此错误(它不会在 POST 或 GET 请求中发生)。

我尝试了什么:

谷歌搜索,没有其他人写过这个特定错误。 DevTools Network 选项卡(即检查实际的 Http 请求标头和内容)...预检请求/响应中似乎没有任何内容表明允许哪些方法,哪些方法不允许。

【问题讨论】:

【参考方案1】:

我的回答:

查看我服务器的 CORS 设置,我意识到 Cors 中间件上的 .AllowAnyHeader() 方法可能表明存在允许任何方法的类似方法。我是对的。

使用.AllowAnyMethod() 修复此错误(假设您确实希望允许任何http 方法类型)。

这是您专门将其放在服务器上的位置(我使用的是 ASP.NET CORE API,我相信是第 5 版):

//Startup.cs

//.... in the "Startup" class "ConfigureServices" method....
public void ConfigureServices(IServiceCollection services)
        
            services.AddCors(options =>
            
                options.AddDefaultPolicy(
                    builder =>
                    
                        builder.WithOrigins("https://example.com")
                            .AllowAnyHeader()
                            .AllowAnyMethod(); //THIS LINE RIGHT HERE IS WHAT YOU NEED
                    );
            );

// ... the rest of your code, other middleware, etc.

【讨论】:

不知道为什么这被否决了。回答帮我解决了同样的问题,谢谢!

以上是关于如何修复 CORS 错误:ASP .NET C# 中的 MethodDisallowedByPreflightResponse的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 - 重新登录时,CORS 策略已阻止访问“https://login.windows.net......”获取

在我的 React 应用程序中获取 api 数据时如何修复 CORS 错误?

如何在 asp.net web apis 中启用 cors 选项。?

如何在 asp.net 网站中激活 cors (razor 3)

如何修复 ASP.NET 中的“此页面无法显示”错误?

如何在 asp.net 自托管 API 中启用 CORS?