AngularJS html5mode重装页面

时间:2015-08-16 14:56:51

标签: javascript angularjs node.js express cors

我有两个单独的应用程序:

  1. 处理http://localhost:8080
  2. 的AngularJS客户端
  3. 运行http://localhost:3000
  4. 的NodeJS API服务器

    NodeJS API服务器只是将json数据提供给客户端(并且不提供任何html页面)。因此,为了使客户端能够与服务器通信,我在我的API服务器上启用了CORS技术。

    app.use(function(req, res, next) {
      res.header("Access-Control-Allow-Origin", "*");
      res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
      res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
      next();
    });
    

    此外,我想使用没有#符号的干净URL,因此我在AngularJS应用程序中启用了html5mode

    function config($stateProvider, $urlRouterProvider, $locationProvider) {
        $locationProvider.html5Mode(true);
        $urlRouterProvider.otherwise('/login');
        ...
    

    --- index.html的

    <!doctype html>
    <html lang="en" ng-app="app">
    <head>
      <base href="/">
      <title>APP</title>
      <link rel="stylesheet" href="css/normalize.css">
      <link rel="stylesheet" href="css/style.css">
      <link rel="stylesheet" href="css/fontello.css">
    </head>
    <body>
    
      <div ui-view="content"></div>
    
      <script src="dist/app.js" type="text/javascript"></script>
    
    </body>
    </html>
    

    问题:当我与我的应用程序通过btn与ui-sref进行交互时,所有工作正常,但是当我重新加载页面时,我得到以下输出:Cannot GET /about

    您可以建议我使用重写我所有的index.html链接 例如:

    app.all('/*', function(req, res, next) {
      res.sendFile('index.html', { root: __dirname });
    });
    

    但我的服务器上没有任何“观点”。

    在这种情况下你能给我什么?

0 个答案:

没有答案