在我们的应用程序中,我们正在发出跨域请求,因此我们必须使用 CORS。由于 IE 以非标准方式执行此操作,我们创建了自己的服务(它依赖于$http
非 IE 请求)来为我们处理所有这些。这一切都在这个应用程序中正常工作。但是,我们有一些非应用特定的库代码需要发出请求。因此,如果我们的库代码中的这些服务只是使用$http
,则请求将无法在需要执行 CORS 的应用程序中工作。但是,我们不希望这些服务注入我们的 CORS 服务,因为这会破坏不执行跨域请求的应用程序中的请求。
话虽如此,我的最终目标是让库代码注入并$http
用于所有必要的请求。然后,在特定的应用程序中,它可以定义如何$http
工作。我最初以为我可以重新定义$http
. 像这样的东西:
angular.module("myCorsApp").provider("$http", function() {
return {
$get: function(CORShttpService) {
return CORShttpService;
}
}
});
但是,这会导致以下错误:
Circular dependency: CORShttpService <- $http <- $compile
我不确定我是否了解循环依赖的来源。是否$compile
依赖于提供者或其他东西?
我真正的问题是我是否以正确的方式进行。如果没有循环依赖,我认为这将完全实现我想要的。我可以采取一些解决方法来完成这项工作吗?有没有更好/更正确的方法来做到这一点?
如果它有帮助,则CORShttpService
具有以下依赖项:$q、$rootScope、$http、$timeout。谢谢你的帮助。