【问题标题】:How to separate between routing API Sails js and Angularjs [duplicate]如何区分路由 API Sails js 和 Angularjs [重复]
【发布时间】:2018-05-11 02:38:48
【问题描述】:

我在 linux 环境中使用 node js (Sails) 作为后端,使用 angularJs 作为前端,在生产模式下使用 nginx 构建独立 Web。我想在我的网址中删除哈希 (#!)。 我按照本教程进行操作

  1. AngularJS: How to remove #!/ (bang prefix) from URL?
  2. https://www.youtube.com/watch?v=XsRugDQaGOo

现在,只要我不刷新,我的网站在每个页面中都可以正常运行,而没有哈希 (#!),但是当我刷新时,它会从后端调用我的 API 或找不到 404。我按照那些教程把

<base href="/"/>

在我的 layout.ejs 上,但它仍然无法正常工作。

这是我使用状态路由 angularjs 的示例代码

(function() {
  'use strict';

  angular
  .module('buyer.routes', ['ui.router'])
  .config(function($locationProvider, $urlMatcherFactoryProvider, $urlRouterProvider, $stateProvider){
    $urlRouterProvider.otherwise("/");
    $urlMatcherFactoryProvider.caseInsensitive(true);
    $stateProvider
    .state('home', {
      url: '/',
      templateUrl: 'templates/buyer/buyer-index.html',
      controller: 'BuyerController',
      controllerAs: 'vm'
    })

    .state('home.testi', {
      url: 'testimoni',
      templateUrl: 'templates/buyer/buyer-testimoni.html',
      controller: 'BuyerTestimoniController',
      controllerAs: 'vm',
      data : { pageTitle: 'Testimoni page'}
    })

    $locationProvider.hashPrefix('');
    $locationProvider.html5Mode(true);

  })

}());

我的代码有什么问题? 谢谢你

【问题讨论】:

    标签: javascript angularjs sails.js


    【解决方案1】:

    你的代码没有错,但你需要理解这个概念。 Angular SPA 应用程序会根据您正在访问的组件更改 URL。这与后端无关。在这种情况下,不会向后端发送任何请求。

    但是,当您刷新浏览器时,请求被发送到后端并且后端没有找到任何与此 URL 匹配的资源,因此返回 404。要处理此问题,您必须使后端能够处理所有这些 URL 都是通用的。

    您可以根据自己的要求以不同的方式在后端处理这些请求。几个选项是:

    1. 刷新时,注销用户。
    2. 刷新时,重定向到基本 URL。

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 2016-06-03
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2015-10-27
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多