Доступ к файлам cookie в торнадо через вызовы ajax в колбе

Как в обзоре, у меня есть приложение Flask, которое служит основным веб-сайтом, и приложение Tornado, которое служит сервером чата для веб-сайта, каждое из которых работает независимо на отдельном порту.

Приложение чата напрямую считывает информацию о сеансе из фляги,

self.get_cookie(settings.SESSION_COOKIE_NAME)

Проблема, с которой я сталкиваюсь, заключается в том, что если я получаю доступ к серверу чата через браузер, сеанс будет прочитан, но с использованием вызова Ajax сеанс не будет.

Сервер чата предоставляет заголовок Access-Control-Allow-Domain для разрешения междоменного вызова.

Аякс очень простой,

$.getJSON('http://127.0.0.1:8888', {'message': 'test'}, function(){});

Домен файлов cookie просто установлен на 127.0.0.1 и не является файлом cookie только HTTP.

Есть ли какая-то конкретная причина, по которой я могу получить доступ к файлу cookie в своем браузере по адресу 127.0.0.1:8888, а не по запросу Ajax?


person Nick    schedule 29.02.2012    source источник


Ответы (1)


http://code.google.com/p/jquery-jsonp/wiki/APIDocumentation

Из моего исследования видно, что междоменные вызовы ajax НЕ отправляют информацию о файлах cookie в заголовках запросов, используя указанную выше библиотеку для обходного пути.

Обратите внимание, что это похоже на

Доступ к файлам cookie через JSONP

Кроме того, ответы JSONP ДОЛЖНЫ отправляться с включенным параметром GET обратного вызова, иначе будет выдана ошибка.

Uncaught SyntaxError: Unexpected token :

E.g.

http://127.0.0.1:8888/chat/get_messages?callback=jsonp

Отвечает

jsonp(
    {
        'data': '1',
        'result': true 
    }
)
person Nick    schedule 01.03.2012