来自 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 $http CORS 405 方法不允许

不允许使用 Angular 405 方法和“显示临时标题”错误

Angular 7:发送 post 请求给出错误 405(不允许的方法)

从 Angular 向 Asp.net 发送 post 请求时出现错误 405

如何配置 Spring Security 以避免 405 Method Not Allowed for PUT request from Angular?

URL angular 2 typescript web 应用程序不允许使用 405 方法