AngularJS如何禁用CORS?

6
也许我完全错了,但我有一台在本地运行的服务器,并且没有配置Angular使用CORS进行$http请求。当我向localhost:<port>发出HTTP请求时,我看到Chrome首先创建一个OPTIONS请求。

因为我需要支持IE 8-而AngularJS绝对不会使用CORS-所以我需要删除CORS。
我尝试直接设置POST方法,而不使用$http.post包装器,但无济于事。也许这与https://github.com/angular/angular.js/issues/1585有关。
我还尝试从控制器直接调用jQuery ajax post-即使CORS选项为false(因为它似乎默认为true)。它仍然会创建一个CORS请求。
这个配置是什么?
1个回答

21

CORS是由请求URL决定的,而不是你可以设置的任何配置。如果您的源与请求的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不在默认的公共头列表中。您无需将其从列表中删除。


2
是的 - 这符合我的问题,就是我太蠢了。 - user375566

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接