来自 Angular 的 405
Posted
技术标签:
【中文标题】来自 Angular 的 405【英文标题】:405 from Angular 【发布时间】:2018-11-29 00:11:13 【问题描述】:我遇到了我认为是 CORS 的问题,但我正在努力解决它。我需要允许从任何地方访问,所以在我的 Web API 2 服务中我将它添加到 web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
我不完全确定为什么会有处理程序的东西,但我继承这个项目的小组说我必须拥有它来处理 CORS 的东西。
我还验证了 IIS 服务器没有过滤任何动词。
然后当我通过“npm run start”在本地运行我的 Angular 应用程序并连接到 Web 服务时,当我尝试发布我的帖子时,我最终得到了 405 错误。
【问题讨论】:
【参考方案1】:请参阅此document 为您的 asp.net webapi 2 启用 CORS。启用 CORS 后,您应该能够使用 Angular 应用程序进行 POST。
以下是步骤:
-
安装 Microsoft.AspNet.WebApi.Cors NuGet 包
在
WebApiConfig.Register
方法中添加config.EnableCors();
根据您的要求在操作方法或控制器上添加EnableCors
属性
【讨论】:
我收到此错误:`“Access-Control-Allow-Origin”标头包含多个值“*、*”,但只允许一个。 Origin 'localhost:4200' 因此不允许访问。`当我尝试通过config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
启用时
全局启用 CORS 后,您是否也将其设置为控制器或操作方法?此外,请确保在使用此 Nuget 包之前删除您尝试的 web.config 更改
没有。一种方法根本不发送标头。一对夫妇送了两颗星。
您删除了与自定义标头相关的 web.config 更改?以上是关于来自 Angular 的 405的主要内容,如果未能解决你的问题,请参考以下文章
不允许使用 Angular 405 方法和“显示临时标题”错误
Angular 7:发送 post 请求给出错误 405(不允许的方法)
从 Angular 向 Asp.net 发送 post 请求时出现错误 405
如何配置 Spring Security 以避免 405 Method Not Allowed for PUT request from Angular?