AngularJS禁用CORS?
也许我完全错过了一些东西,但我有一台本地运行的服务器,并且没有配置Angular来为$ http请求使用CORS。 当我向localhost: 发出HTTP请求时,我看到Chrome首先创建了一个OPTIONS请求。
因为我需要支持IE 8 – 而AngularJS肯定不会在那里使用CORS – 我需要删除CORS。
我试过直接设置POST
方法而不使用$http.post
包装器但没有用。 也许这与https://github.com/angular/angular.js/issues/1585有关
我也尝试直接从控制器调用jQuery ajaxpost – 即使CORS选项为false(因为它似乎默认为true)。 它仍然会创建一个CORS请求。
这有什么配置?
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不在默认的公共标题列表中。 您无需从列表中删除它。