Я использую клиентский SDK, который создает скрипт под капотом и прикрепляет его к <head>
и выглядит следующим образом:
<script src="http://foo.com?foo=bar"></script>
Обратите внимание, что callback
параметр отсутствует.
Ответ возвращает следующее (с заголовком Content-Type: application/javascript
):
{ document.cookie="something=thing" }
И он устанавливает cookie вбраузер (я вижу, когда смотрю на куки в инструментах разработчика).
Странно, что в URL скрипта нет параметра обратного вызова, как вы обычно ожидаете в запросе JSONP.
Я попытался воспроизвести это поведение, добавив аналогичный сценарий на локальную веб-страницу, и я запускаю локальный сервер, который возвращает тот же ответ, но в отличие от SDK он не устанавливает cookie-файл.Сам SDK довольно прост, и я не вижу никакой другой магии.
Кто-нибудь видел что-то подобное раньше?Как это работает?
Редактировать: вот внутренний метод SDK и пример ответа
_jsonp: function(o, e) {
var t = document.createElement("script");
t.type = "text/javascript", t.src = e, t.async = !0, document.getElementsByTagName("head")[0].appendChild(t), o.log("SENT JSONP request: " + e)
},
Пример ответа:
Заголовки ответа
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 158
Content-Type: application/javascript
Тело ответа
{document.cookie=<redacted>}