Установить удаленный куки со скриптом-тегом? - PullRequest
0 голосов
/ 10 февраля 2012

Сценарий:

  1. Посещения пользователя http://some-site.test/form.html.Страница содержит форму:

    <form action="http://example.com/search" method="post">
    ...
    
  2. Пользователь заполняет и отправляет форму.

  3. Действие http://example.com/search выполняет поиск ипоказывает результат, но только , если cookie был отправлен вместе с данными формы:

    ASP.NET_SessionId=...
    

    Другими словами: сеанс должен быть уже установлен с example.com, илив противном случае поиск не будет работать.Я понятия не имею, почему это так, и в настоящее время я должен связаться с человеком, отвечающим за поиск.

В качестве обходного пути я добавил тег сценария в form.html:

<script src="http://example.com"></script>

Удивительно, но это работает: cookie ASP.NET_SessionId установлен.Однако это уродливое решение, потому что тег script вызывает загрузку полной HTML-страницы, а последствия неясны.В Chrome в консоли отображается сообщение об ошибке:

 Uncaught SyntaxError: Unexpected token <

Мой вопрос:

Есть ли лучшее решение для установки файла cookie перед отправкой формы?

Что еще я имею в виду на данный момент:

  • Скрытый iframe с src="http://example.com".Недостатки:

    • Необходимо определить, когда загружена страница, стоящая за http://example.com, и только тогда форма должна быть видимой.Однако, насколько я могу судить, iframe официально (W3C) не поддерживает атрибут onload.Несмотря на то, что этот атрибут, тем не менее, работает во многих браузерах, я читал, что он не работает в IE <= 8. То же самое верно для связанного события загрузки. </p>

    • Больше, чем простоHTML-код будет загружен, т. е. CSS, изображения и т. д. Это бесполезная трата полосы пропускания, и на самом деле загрузка HTML уже не требуется.Требуется только настройка файла cookie.

  • Скрытый img с src="http://example.com".Недостаток: img не запускает событие загрузки для содержимого HTML, по крайней мере, в Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...