如何:ASP.NET Webforms中的跨站点发布和重定向
-
04-07-2019 - |
题
<强>情境:强>
我手头的任务是在不同的组织/网站之间启用单点登录解决方案。我从一个组织的网站上作为经过身份验证的用户开始,将特定信息转换为Xml文档,使用triple des加密文档,然后将其作为post变量发送到第二个组织登录页面。
<强>问题:强>
打包完xml数据后,如何以编程方式对第二个网站发布帖子,并将用户的浏览器重定向到第二个网站。
这应该像使用以下形式一样:
行动= QUOT; HTTP://www.www.com/posthere"方法= QUOT;交&QUOT;
...并且隐藏文字字段如:
输入类型=&quot;隐藏&quot; value =&quot; my encrypted xml&quot;
这是用asp.net 2.0 webforms编写的。
-
编辑:Nic问为什么我上面描述的html表单不起作用。答:我无法控制任何一个网站;我正在建立“中间人”。这使得所有这一切都发生了。站点1将用户转发到我正在制作的页面,我必须构建XML,然后将其转发到站点2.站点1不希望用户知道我的站点,重定向应该是透明的。
我上面描述的过程是双方(站点A和站点B)所要求的。
解决方案
发回一个包含from with hidden输入的文档,并包含一个onload处理程序,可以立即将表单发布到另一个站点。使用jquery的document.ready()解决了在发布帖子之前是否加载DOM的问题,尽管还有其他方法可以在没有jquery的情况下执行此操作。您可能希望在屏幕上包含一些小消息,以便用户很快重定向并提供一个也可以发布帖子的链接
...headers left out...
<script type='text/javascript'>
$(document).ready( function() {
$('form:first').submit();
});
</script>
<body>
<form action='othersiteurl' method='POST'>
<input type='hidden' value='your-encrypted-xml" />
</form>
</body>
其他提示
你正在考虑这个过程导向,你需要花一个月的时间来尝试找出你所建议的所有错误和移动部分。
您已经在另一台服务器上发帖了,所以您根本不需要做任何事情。您拥有的表单已经完美,当其他服务器截获请求时,它决定允许用户进入并继续通过站点,或者将它们重定向回标题中的Referer(sic)。当重定向回Referer时,他们可能希望查找说明错误的消息,例如?error = no_auth
我曾经写过另一个问题。希望这会有所帮助: