【问题标题】:C# AngularJs HttpDelete is not workingC# AngularJs HttpDelete 不起作用
【发布时间】:2016-02-11 14:39:29
【问题描述】:

我正在使用 C# Web Api 和 AngularJs。如果我添加

<modules runAllManagedModulesForAllRequests="true">
 <remove name="WebDAVModule" />
</modules>

删除请求可以从提琴手工作,但是当从 angularJs 调用它时,我收到一个错误,即选项未定义。默认情况下,选项调用由 angular 完成。

如果我不在HttpDelete上方添加代码表单,则不起作用。我得到了一个响应标头,例如:

Allow: GET, HEAD, OPTIONS, TRACE
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS

我正在使用 $resource 从 AngularJS 调用 web api。移除了 webDavModule 的 web api 中的 web.config 如下所示:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <remove name="WebDAVModule"/>
  </modules>
  <handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="TRACEVerbHandler" />
    <remove name="WebDAV"/>
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />    
  </handlers>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="X-Requested-With, accept, content-type" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

google chrome 上的请求如下:this

你知道我为什么会遇到这个问题吗?

【问题讨论】:

    标签: c# angularjs asp.net-web-api


    【解决方案1】:

    您似乎在localhost:&lt;port&gt; 上托管您的AngularJs 应用程序。您的 Web Api 必须使用包含您的 localhost:&lt;port&gt; 的 Access-Allow-Control-Origin 进行响应。

    当您在不同的端口上托管时,您的浏览器会发送带有 HTTP OPTIONS 的飞行前请求。 Web API 也必须允许 HTTP OPTIONS 动词。

    http://www.html5rocks.com/en/tutorials/cors/

    您还可以查看 Chrome 开发者工具控制台的内部。在这种情况下,Chrome 必须将错误消息写入控制台。它回答你 HTTP 405 这意味着不允许使用 OPTIONS HTTP 动词,尽管它是在响应 Access-Control-Allow-Headers 标头。 IIS 添加了 HTTP 标头,但 HTTP 405 来自您的服务。

    例如,在我的 OAuth/JWT 服务实现中,由于 Chrome + localhost:&lt;port&gt; 和预检请求的奇怪组合,我需要编写逻辑来响应开发环境中的 OPTIONS 动词上的 HTTP 200。

    【讨论】:

    • 是的,我在 api 的 web 配置中喜欢这个 webapi.com 和 mywebApp.com 我确实有你可以在这一行看到的选项 .
    • @Radu 请您看看 Chrome 开发者工具控制台的内部。在这种情况下,Chrome 必须将错误消息写入控制台。它回答你 HTTP 405 这意味着不允许使用 OPTIONS HTTP 动词,尽管它是在响应 Access-Control-Allow-Headers 标头。 Headers 添加 IIS 和 405 来自您的服务
    猜你喜欢
    • 2014-07-15
    • 2017-09-03
    • 2016-02-23
    • 2016-05-11
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多