2015-08-16 4 views
1

У меня есть два отдельных приложения:AngularJS html5mode перегрузочные страница

  1. AngularJS клиент работает на http://localhost:8080
  2. NodeJS сервер API, работающий на http://localhost:3000

NodeJS API сервера просто дает JSon данные клиента (и не дает никаких html-страниц). Таким образом, чтобы предоставить клиенту возможность общаться с сервером, я включаю технологию CORS на моем сервере API.

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-адреса без символа #, так что я включить html5mode в моем AngularJS приложение

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's с ui-sref, все работает хорошо, но когда я перезагружаю страницу, я получаю следующий вывод: Cannot GET /about

Вы можете предложить мне использовать переписать все мои ссылки на index.html Например:

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

Но я не какие-то «представления» на моем сервере.

Что вы можете предложить мне в этой ситуации?

ответ

2

Вы догадались, что правильно!

Необходимо указать серверу на порту 8080 для обслуживания файла index.html во всех запросах (кроме существующих статических файлов).

UI Router затем направит вас на соответствующую страницу на стороне клиента на вашем угловом приложении или перенаправит пользователя на другой URL-адрес, если тот, который был набран, не является допустимым маршрутом.

+0

Спасибо, я решил эту проблему. Но но появляется новое. Теперь, если я перезагружаю страницу, я потерял cookie и сессию. У вас есть идеи, что может быть неправильным? – HelterShelter

+0

Вы должны задать новый вопрос и показать нам код :). Покажите нам, как вы выполняете аутентификацию против своего api. – Eloims

+0

Извините, моя вина. Если вам интересен этот вопрос, здесь ссылка http://stackoverflow.com/questions/32040090/lose-cookie-session-when-reload-page. Спасибо. – HelterShelter

Смежные вопросы