0

Я понимаю, что есть проблемы с безопасностью (SOP, CORS и т. Д.) С Javascript и кросс-сайтами с AJAX, однако я отправляю форму из одного домена и отправляю ее по другому. Я не думаю, что SOP применяется, но исправьте меня, если я ошибаюсь.Я получу согласованное поведение при отправке POST в кросс-домен с помощью javascript при использовании "document.forms [0] .submit();"?

Основная причина, по которой я выполняю междоменные POST, заключается в том, что Base64, кодирующий данные в строке GET, будет содержать большие URL-адреса, которые могут содержать конфиденциальные данные.

  • В целом приемлемо (в мобильных и настольных браузерах) использовать следующий скрипт?
  • Могут ли мобильные браузеры или любой другой браузер расстраиваться, если я последую этому шаблону перенаправления?

код

<form action="https://MyotherDomain.com" method="post"> 
    <input type="hidden" name="UIDPName" value="@Model.UIDPName"> 
    <input type="submit" value="Redirect" /> 
</form> 

<script> 
window.onload = function(){ 
    document.forms[0].submit(); 
} 
</script> 
+0

Если вы доверяете домену, я не понимаю, почему нет. что именно вы хотите сделать «безопасным» * от? –

+0

@KevinB CORS, SOP ... безопасно, я, вероятно, должен был сказать «надежный на кросс-платформенном пути», – LamonteCristo

ответ

0

Я видел и использовать этот точный рисунок на производственном уровне, корпоративных веб-сайтов. Мы используем его для передачи данных, отправляемых через POST, на страницу сайта, обращенного пользователю, к другому, который встроен через iframe.

Вот наша точная реализация, где example.com является доменом второго сайта:

<form class="js-forwarding-form" target="forwarding-frame" action="http://example.com" method="post"> 
    <input type="hidden" name="example" value="example"> 
</form> 

<iframe name="forwarding-frame" src=""></iframe> 

$(document).ready(function() { 
    $('.js-forwarding-form').submit(); 
}); 

<body onload="document.forms[0].submit()"> версия работает так же.

Нет причин для того, чтобы он не работал, поскольку CORS и SOP применяются только к запросам, запущенным в JavaScript (XMLHttpRequest и т. Д.), Тогда как здесь вы вызываете только отправку HTML-формы. Он был протестирован и работает на всех основных настольных браузерах (не протестированных в IE8), а также в мобильных браузерах.

Что касается того, приемлемо это или нет, то вам просто нужно напомнить себе, что эта передача данных выполняется на виду в браузере. Все значения, отправленные таким образом, должны быть дезинфицированы/проверены, как если бы он был введен пользователем.