2013-05-20 114 views
1

仅使用AngularJS可以检测子域并相应地路由?AngularJS子域的路由

说子域spicy.example.com指向相同的文档根目录为example.com

example.comindex.html那里住<div ng-view></div>

在我的配置我定义部分路线:
$routeProvider.when('/food', {templateUrl: 'views/example.com/regular.html'});

但是,如果spicey.example.com希望覆盖regular.html部分与它自己?
$routeProvider.when('/food', {templateUrl: 'views/spicy.example.com/hot.html'});

这可能没有在Apache/Nginx等服务器上使用重写规则?

注:
这是一个单页应用
$locationProvider.html5Mode(true);

我使用CORS:
$http.defaults.useXDomain = true;

回答

0

不,这是因为Same origin policy不可能的。

记住同源策略适用于包括资源 是(例如ngInclude不会为所有的浏览器 跨域请求和文件的工作:在某些浏览器//访问)。

http://docs.angularjs.org/api/ng.directive:ngInclude

+0

我不知道什么SOP有什么关系。如果我在'spicy.example.com'上,并且正在从'example.com/views/spicy.example.com /'请求一个资源,我并没有发出一个交叉源请求来执行一个动作,我只是做了一个请求资源。 –

+0

你应该有相同的主机,相同的端口和相同的协议来提出请求。在这种情况下,您违反了主机规则。所以它是交叉原点请求。 –

+0

我想我们可能会谈论不同的事情。以与你对js资产的思考相同的方式思考部分问题。当然,你可以从CDN中获取jquery,就像你可以获取一个部分一样。 –

0

CORS似乎是要走的路。

您可以通过NGINX/Node.js和enbale CORS将请求传递到文件,也可以使用CDN为启用CORS的资产(如Amazon Cloud S3)提供服务。

如果sumdoamins都指向同一个文档根目录但访问:

example.com/views/home.html 

将是没有什么不同比访问:

test.example.com/views/home.html