Сценарий:
Посещения пользователя http://some-site.test/form.html
.Страница содержит форму:
<form action="http://example.com/search" method="post">
...
Пользователь заполняет и отправляет форму.
Действие 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.