也许我完全丢失了一些东西,但是我有一个本地运行的服务器,并且 没有 将Angular配置为对$ http请求使用CORS。当我向localhost:发出HTTP请求时<port>,我看到Chrome首先创建了OPTIONS请求。
<port>
因为我需要支持IE 8,并且AngularJS绝对不能在CORS中使用,所以我需要删除CORS。
我尝试直接设置 不 使用包装器的POST方法,但没有任何效果。也许这与https://github.com/angular/angular.js/issues/1585有关 __$http.post
POST
$http.post
我也尝试过直接从控制器调用jQuery ajax帖子-即使CORS选项为false(因为它似乎默认为true)。仍然会创建CORS请求。
这是什么配置?
CORS是您请求网址的结果, 而不是 您可以设置的任何配置。如果您的来源与请求url协议/域/端口不匹配,则将收到CORS请求-无例外。
例如,起源为http://www.example.com:8080:
这是一个CORS请求:http : //example.com :8080/ path.json(不同的子域)
这是一个CORS请求:http : //www.example.com/path.json(不同的端口)
这是一个CORS请求:https ://www.example.com:8080/path.json (不同的协议)
这 不是 CORS请求:http : //www.example.com :8080/path.json (协议,域和端口均与源匹配)
就是说,发生OPTIONS请求是因为您在标准标头之外有一个标头(很有可能,您的请求具有X-Requested- With标头)。在Angular.js中,您可以使用以下方法将其删除:
angular.module('yourModuleHere') .config(function ($httpProvider) { delete $httpProvider.defaults.headers.common['X-Requested-With']; });
请注意,对于Angular.js 1.2及更高版本,X-Requested-With不在默认的公共标头列表中。您无需将其从列表中删除。