2010-11-19 3 views
2

У меня проблема с JSONP и файлы cookie, отправленные браузером.Cookies и JSONP

На самом деле, у меня есть два сайта: server1 и server2. Я хочу, чтобы мои пользователи прошли аутентификацию на сервере1, и когда они переходят на server2, я бы хотел проверить (с помощью Javascript JSONP-вызова server1), если они аутентифицированы.

Аутентификация на сервере1 управляется с помощью файлов cookie, и я думал, что при выполнении моего вызова server1 через JSONP браузер отправит файлы cookie, а затем аутентификация будет работать. Но кажется, что браузер (FF) не отправляет файлы cookie на сервер1 при отправке запроса через JSONP.

Кто-нибудь знает, могут ли браузеры отправлять файлы cookie при запросе с помощью JSONP? Если это не так, было бы лучшим решением проверить Javascript, если пользователь будет аутентифицирован на сервере1 с сервера2?

Спасибо за ваши ответы,

Винсент

+0

Загрузите скрытый iFrame Server2 на страницу server1, а затем получите файлы cookie и т. Д., Которые вам нужны в iFrame. Передайте сообщение на сервер1 через Javascript. –

ответ

1

Это зависит от доменных имен этих серверов. Если они server1.example.com и server2.example.com, вы можете установить для куки-файлов в зависимости от домена .example.com. Затем будут файлы cookie, отправленные на оба сервера.

Если вы не можете сделать это, как я написал, вам нужно будет сделать некоторое обходное решение. Например, iFrame.

0

Я согласен с тем, что сказал @Jakub и объяснил, что может произойти в вашем случае. Я предполагаю, что у вас есть домены как server1.com и server2.com

Так что если вы устанавливаете файл cookie из приложения, находящегося на сервере server2.com, и выполняете запрос JSONP к приложению, которое находится на server1.com, из server1.com, он отправит файлы cookie, если они были установлены ранее с server1.com. В противном случае он не отправил бы файлы cookie, установленные сервером server2.com. На самом деле браузер делает запрос на server1.com из приложения server2.com, который точно такой же, как server2.com, запрашивающий файл JavaScript с CDN или любого другого сервера. Следовательно, он не отправит ни одного из файлов cookie server2.com, иначе это станет большой проблемой безопасности в браузере.

Надеюсь, что это имеет смысл.