灵活的www .htaccess设置导致跨域错误AngularJS

时间:2015-04-13 19:20:34

标签: javascript angularjs .htaccess cross-domain uri

我正在使用Angular 1.3.2创建一个非常简单的RESTful网站。可以在这里看到:

http://artlyticalmedia.com

如果你带着领先的" www"去同一个网站。它会工作,因为.htaccess文件通过执行以下操作重写没有www的URL:

<IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>

如果有人试图与&#34; www&#34;进行深层链接,则会出现问题。在前面,一个la http://www.artlyticalmedia.com/portfolio(sans&#34; www&#34;工作正常,试一试)。如果您查看所选的Web检查器,您会看到每个ng-include模板都会引发跨域错误。如果有帮助,这是我的app.js文件,其中包含所有路由:

angular
  .module('comartlyticalmediawwwApp', [
    'ngAnimate',
    'ngAria',
    'ngCookies',
    'ngMessages',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch',
    'ui.bootstrap',
    'ng.deviceDetector'
  ])
  .config(function ($routeProvider, $locationProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/home.html',
        controller: 'HomeCtrl',
        navbarVal: 'home',
        title: 'Home'
      })
      .when('/portfolio', {
        templateUrl: 'views/portfolio.html',
        controller: 'PortfolioCtrl',
        navbarVal: 'portfolio',
        title: 'Portfolio'
      })
      .when('/contact', {
        templateUrl: 'views/contact.html',
        controller: 'ContactCtrl',
        navbarVal: 'contact',
        title: 'Contact'
      })
      .otherwise({
        redirectTo: '/',
        controller: 'HomeCtrl',
        navbarVal: 'home',
        title: 'Home'
      });

    $locationProvider.html5Mode({
      enabled: true,
      requireBase: false
    });
  }).run(['navbarValChanger', function (navbarValChanger) {
    navbarValChanger();
  }]);

我该如何解决这个问题?我是否在.htaccess中更改内容或在app.js中添加设置?所有其他类似问题都涉及服务器端查询,例如AJAX或使用$ https,当我根本不这样做时。它只是一个抛出错误的路线,当&#34; www&#34;存在,所以其他答案都不起作用。

1 个答案:

答案 0 :(得分:-1)

好像你在同源策略中遇到了一些问题。关于它,这是一个很好的article 您的问题的可能解决方案(如果我理解正确)是在应用程序开始时使用以下行更改原点:

document.domain = "www.artlyticalmedia.com";