404 在 CORS 请求中返回,来自 Angular 服务的一些 Web api 调用

Posted

技术标签:

【中文标题】404 在 CORS 请求中返回,来自 Angular 服务的一些 Web api 调用【英文标题】:404 returned in CORS request for some web api calls from angular service 【发布时间】:2014-10-19 08:29:35 【问题描述】:

我有一个从 ASP.Net Web api 服务检索数据的 Angular 应用程序。

Web api 托管在不同的域中。

web api 包含多个 URL 来查询不同类型的数据,例如site2/api/Employeessite2/api/Managers 等。

Web api 像往常一样具有全局配置,即没有为任何特定控制器进行特殊配置。

我在 angularjs 中创建了不同的控制器,每个控制器都有一个服务(复制粘贴的代码,但我已经正确检查并更新了所有必要的引用)。

当我在 site1 中从我的 Angular 代码访问 site2/api/Employees 时,会从 web api 服务返回数据。

但是,当我从我的角度代码访问 /site2/api/Managers 时,我收到一个错误 OPTIONS:/site2/api/Managers 404 not found XMLHttpRequest 无法加载 /site2/api/Managers 无效状态码 404

有人可以为这个问题提供解决方案

【问题讨论】:

听起来您的问题出在后端。当您通过 Postman(或者如果您使用的是 Firefox,则为 Poster)执行相同的请求时会发生什么? 【参考方案1】:

我不是 angularjs 用户,但我可以在 cors 中为您提供帮助

当浏览器允许跨域请求时,cors 请求有效。

一种方法是允许 Cors 请求是通过客户端浏览器

(jquery) jQuery.support.cors = true 如果满足以下条件,此行将很有帮助 你只针对 IE 要在其他浏览器中启用,您可以查看this javscript

另一种方法是将 HTTP 响应标头设置为从服务器端对 Cors 的所有访问

下面是我通过 HTTP 响应标头访问 Cors 的所有 php 代码

<?php

header('Access-Control-Allow-Origin:  http://yourdomain.com');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
header('Access-Control-Allow-Headers', 'Content-Type'); 

我希望这可以帮助你..

【讨论】:

以上是关于404 在 CORS 请求中返回,来自 Angular 服务的一些 Web api 调用的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 webflux 中使用 WebFilter corsFilter 时请求返回 404 状态?

Yii 和 Vue2 CORS 启用。服务器以 404 错误响应预检 OPTIONS 请求

Rails 在 CORS 预检选项请求中以 404 响应

Tomcat 启用 CORS:来自 Safari 的 POST 请求返回 200,Chrome 和 Firefox 返回 403

Web API + jQuery AJAX DELETE 请求返回 404

如何修复来自 Axios 的随机 http 请求(404 响应)