预检响应具有无效的 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
预检响应在角度 4 中具有无效的 HTTP 状态代码 500