一尘不染

AngularJS禁用CORS?

angularjs

也许我完全丢失了一些东西,但是我有一个本地运行的服务器,并且 没有 将Angular配置为对$
http请求使用CORS。当我向localhost:发出HTTP请求时<port>,我看到Chrome首先创建了OPTIONS请求。

因为我需要支持IE 8,并且AngularJS绝对不能在CORS中使用,所以我需要删除CORS。

我尝试直接设置
使用包装器的POST方法,但没有任何效果。也许这与https://github.com/angular/angular.js/issues/1585有关
__$http.post

我也尝试过直接从控制器调用jQuery ajax帖子-即使CORS选项为false(因为它似乎默认为true)。仍然会创建CORS请求。

这是什么配置?


阅读 214

收藏
2020-07-04

共1个答案

一尘不染

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不在默认的公共标头列表中。您无需将其从列表中删除。

2020-07-04