预检响应具有无效的 HTTP 状态代码 404”

Posted

技术标签:

【中文标题】预检响应具有无效的 HTTP 状态代码 404”【英文标题】:Response for preflight has invalid HTTP status code 404” 【发布时间】:2017-09-26 01:24:23 【问题描述】:

我无法从 Angular 应用程序进行 POST 调用,IIS 服务器拒绝请求并显示“预检响应具有无效的 HTTP 状态代码 404”,我知道有很多这样的问题,但我见过的都没有解决我的问题

我的 web.config 中已经有以下内容并且仍然看到问题?我也启用了 CORS,并且 GET 请求工作。谁能指点如何调试这个问题?

  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
      <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
    </customHeaders>
  </httpProtocol>

更新:

    [Route("api/SoftwareProduct/GetBuildNotes")]
    [HttpPost]
    public ResponseObject GetBuildNotes([FromBody] BuildNotes_ip BuildNotes)
    
        ResponseObject response = new ResponseObject();
        try
        
            response.status = 200;
            response.data = SPS.GetBuildNotes(BuildNotes);
            if (BuildNotes.IsEdit)
                response.message = "Inserted Data successfully.";
            else
                response.message = "Fetched Data successfully.";
            return response;
        
        catch (Exception e)
        
            response.status = 200;
            response.data = null;
            response.message = e.Message;
            return response;
        

    

错误:-

【问题讨论】:

【参考方案1】:

我认为这是一个 cors 问题。确保您的后端服务器不仅接受 POST 请求,还接受同一端点 url 的 OPTIONS 请求。 OPTIONS 请求应该只返回成功 200 代码

【讨论】:

Anis - 你能扩展accepting OPTIONS request吗?如何以及在哪里添加这个? 您有一个服务器,您正在向其发送POST 请求。在该服务器上,您可能有类似“当用户使用请求类型POST 访问端点/abc 时返回某些东西”。您还需要这样的内容:“当用户使用请求类型OPTIONS 到达端点/abc 时返回200 OK 你说的很模糊......没有具体细节......无法转化为任何可实施的东西【参考方案2】:

有时 CORS 问题会产生误导,因为它可能是一个不同的例外,但仍会显示出来。我建议以下内容作为指针: 我假设您在 Windows 上使用 Chrome。运行以下命令以打开禁用 Websecurity(包括 CORS) 的 Chrome。请确保在运行此命令之前关闭所有 Chrome 实例。

转到 Windows 图标 > 运行:

chrome.exe --user-data-dir="C:/Chrome 开发会话" --disable-web-security

然后再次运行应用程序,让我们知道结果。此外,如果您分享您的 http 帖子 代码和 API 控制器方法的签名,包括 路由,也会很有帮助。

【讨论】:

Felix - 即使在尝试了这个之后仍然有这个问题......,用最新的代码更新了我的问题 嗨@dot_net 我看到了更新,Web API sn-p 看起来还不错。您还可以使用 AngularJS sn-p 进行更新吗?也许您绑定 BuildNotes 对象的方式是问题所在。问题是 Route 对客户端(AngularJs)不可见。

以上是关于预检响应具有无效的 HTTP 状态代码 404”的主要内容,如果未能解决你的问题,请参考以下文章

已启用 CORS,但在 POST JSON 时,预检响应的 HTTP 状态代码 404 无效

预检具有无效的 HTTP 状态代码 404 Jquery AJAX POST

预检响应具有无效的 HTTP 状态代码:401 角度

预检响应在角度 4 中具有无效的 HTTP 状态代码 500

Angular 5:预检响应具有无效的 HTTP 状态代码 403

Angular $http:预检响应具有无效的 HTTP 状态代码 403