2013-08-30 2 views
1

Я создал API/пользователя/аутентификации, где я могу отправить с помощью POST объект JSON как:Доступ печенье с Угловое или Javascript

var user = {"username":"alex", "password":"m"} 
$http(
      { 
       method: 'POST', 
       url: '/api/v1/user/auth', 
       data: user, 
      } 
     ). 
      success(function(data, status, headers, config) { 
       console.log(data) 
      }). 
      error(function(data, status, headers, config) { 
       // called asynchronously if an error occurs 
       // or server returns response with an error status. 
      }); 

Отклик от Django является следующее:

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:Content-Type,* 
Access-Control-Allow-Methods:POST,GET,OPTIONS,PUT,DELETE 
Access-Control-Allow-Origin:* 
Content-Language:fr 
Content-Type:application/json 
Date:Fri, 30 Aug 2013 15:22:01 GMT 
Server:WSGIServer/0.1 Python/2.7.5 
Set-Cookie:sessionid=w63m0aoo8m3vfmvv0vk5d6w1708ftsrk; Path=/ 
Vary:Accept, Accept-Language, Cookie 

Поэтому Django возвращает хороший файл cookie, но я не знаю, почему Chrome не устанавливает этот файл cookie в Resource.

Запрос отправлен с 127.0.0.1:8000 по 127.0.0.1:8080; Я использую этот middleware обрабатывать КРОС запросы и я также установил:

SESSION_COOKIE_HTTPONLY = False 

ответ

0

Ok благодаря Бк ссылку на Mozilla я, наконец, нашел, почему печенье не был установлен.

Действительно, вы должны установить в заголовке вы послали:

Access-Control-Allow-Credentials: true 

В Угловое это делается с помощью этого метода:

$http(
      { 
       method: 'POST', 
       url: '/api/v1/user/auth', 
       data: user, 
       withCredentials: true 
      } 
     ) 

После того, как ваш бэкенд ответит с SetCookie, браузер будет затем сможете настроить файл cookie в своем браузере.

0

Проблематику линии:

Access-Control-Allow-Origin: * 

верительный запрос не работает с шаблоном позволяет происхождение. Вы должны определенно установить имя, как:

Access-Control-Allow-Origin: http://127.0.0.1:8080 

Вы можете найти более подробную информацию здесь:

https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#Requests_with_credentials

+0

К сожалению, он не работает ... Я меняю '*' на 127.0.0.1, и все же cookie не установлен :( –

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