AngularJS禁用CORS?

时间:2013-10-23 23:48:18

标签: javascript jquery angularjs cors

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

因为我需要支持IE 8 - 而且AngularJS肯定不会在CORS上运行 - 我需要删除CORS。

我尝试使用POST包装器直接设置$http.post方法而不是但无济于事。也许这与https://github.com/angular/angular.js/issues/1585

有关

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

这是什么配置?

1 个答案:

答案 0 :(得分:19)

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(不同的协议)

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