我理解使用JAX和使用AJAX的跨站点请求存在安全问题(SOP,CORS等),但是我从一个域提交表单并将其发布到另一个域。我不认为SOP适用,但如果我错了,请纠正我。
我正在进行跨域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)
我在生产级企业网站上看到并使用了这个确切的模式。我们使用它将通过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下测试)以及移动浏览器。
至于这是否可以接受,嗯,你只需要提醒自己,这个数据传输是在浏览器上完成的。以这种方式发送的所有值都应该被清理/验证,就像它是用户输入一样。