2013-09-19 5 views
2

У меня есть веб-приложение erlang с ковбойским и угловым.js.Браузер не перенаправляет

Я начал свое приложение, открыл браузер в '/' и получил main.html с <input> и <button>. Когда я нажал на кнопку я отправить HTTP POST запрос на сервер к /join/username с угловым $http, получил этот POST запрос на сервер и отправить перенаправление в браузере:

{ok, Req4} = cowboy_req:reply(303, [{"Location", <<"/chat.html">>}], <<"">>, Req3) 
{:ok, req4, State} 

заголовки ответа Перенаправление:

HTTP/1.1 303 See Other 
connection: keep-alive 
server: Cowboy 
date: Thu, 19 Sep 2013 14:36:01 GMT 
content-length: 0 
Location: /chat.html 
Cache-Control: no-store 

После отправки перенаправления я получил запрос «GET» из браузера с «/chat.html», это нормально. Я читаю chat.html и отправляю обратно в браузер, но браузер не отображает его, и URL-адрес не изменяется в браузере. Я вижу chat.html 200 в консоли браузера.

Почему браузер не отображает новую страницу - chat.html?

UPD 1.

если я типа /join/username в браузере вручную перенаправляет нормально. Зачем?

спасибо.

ответ

0

Вы говорите, что звоните на сервер, используя услугу $http от углового. Это означает, что вы делаете вызов AJAX. Данные ответа отправляются на обратный вызов success при поставке вызова $http. В этом случае ваши данные отклика будет полезной нагрузки файла chat.html:

$http({method: 'POST', url: '/join/username'}). 
    success(function(data, status, headers, config) { 
    // data will be the content from chat.html 
    }); 

Браузер только заметно следует переадресовывает, когда он делает запросы как часть нормальной навигации потока. Запросы AJAX выполняют переадресацию, но результат не отображается в окне браузера - он возвращается вместо кода. Вот почему набирать адрес в браузере работает для вас.

Если вы хотите следовать этому переадресации, вы можете просто отправить свою HTML-форму напрямую /join/username и избавиться от вызова Angular AJAX.

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