Я отправляю форму AJAX со страницы в схеме http на URL https (домен и приложение совпадают).Я использую MVC 3 Ajax helper:
@using (Ajax.BeginForm(MVC.Payment.Confirm(), new AjaxOptions
{
HttpMethod = "Post",
UpdateTargetId = "myId",
InsertionMode = InsertionMode.Replace,
OnBegin = "$('#popupAjaxLoader').show();",
OnSuccess = "$('#popupAjaxLoader').hide();",
Url = "https://same.domain/payment/confirm"
}, new { @action = "https://same.domain.com/payment/confirm" }))
{
...
}
В приложении я использую аутентификацию форм:
<forms loginUrl="~/Account/LogOn" timeout="2880" name="MYCOOKIENAME" />
В firebug я вижу, что куки аутентификации не отправляются на сервер при отправкеформа, поэтому обработчик не работает (запрос должен быть авторизован).Как я могу заставить Ajax.BegiForm прикреплять cookie аутентификации?
ОБНОВЛЕНИЕ:
Оказалось, что решение, предложенное counsellorben, работает, если нет необходимости получать какие-либоинформация обратно из запроса AJAX.Отправка Ajax POST из HTTP в HTTPS работает нормально (файлы cookie не прикреплены, поэтому вы должны POST все необходимые данные в виде скрытых полей формы), но ответ сервера недоступен для javascript из-за той же политики происхождения.В конце концов мне пришлось отказаться от Ajax и поместить форму в iframe со ссылкой на HTTPS url, который, кажется, является окончательным решением этой проблемы.