【发布时间】:2011-12-14 20:02:28
【问题描述】:
我有一种情况,我需要将用户从我服务器上的页面重定向到另一台服务器上的页面。在此重定向中,我还需要将一些 xml 发送到我要重定向到的服务器。这个 xml 文件可能很长,所以不能只在查询字符串中发送它。
我尝试将 xml 附加到标题中,但标题似乎没有到达另一端。
我知道如何以编程方式创建发送 xml 的请求以及如何重定向,只是不知道如何同时进行。
简而言之,我需要 xml 来搭载重定向。此重定向将在 MVC 操作中完成。
提前致谢。
编辑
我想出了以下可能的解决方案来解决我的问题。不幸的是,它确实利用了我希望避免的两个请求。
基本上,我将 xml 文件作为发布请求的标头发送,该标头还包含会话 ID。这是异步发送的。
然后我重定向用户,在查询字符串中传递相同的 sessionid。这充当将一个请求链接到另一个请求的令牌。我现在只需要等待,看看对方是否愿意使用两个请求来工作。
我还考虑使用一个额外的页面,我可以将用户重定向到该页面,该页面可能包含 Javascript,以执行一个额外的表单发布到另一个服务器,表单只包含一个包含 xml 片段的字段,但是这个被我的老板排除在可能性之外(正确的,因为它看起来有点像黑客)。
除了两个请求之间存在竞争条件的明显可能性之外,我提出的方法是否有任何明显或不明显的缺点?
【问题讨论】:
-
我认为您需要做的是将 XML 发送给他们并取回令牌。然后将用户重定向到包含该令牌的 URL。现在,第三方站点知道将 XML blob 与该用户相关联。您会在某些支付处理系统中看到这种安排。
-
什么会利用这个 XML,因为客户端无论如何都会去重定向到资源?知道这个问题的答案可能有助于了解如何提供进一步的建议。
-
或者,您可以使用 URL 中的令牌将用户重定向到第三方站点。您知道令牌与特定的 blob 相关联。第三方站点获取令牌并向您请求您提供的 blob。现在第三方拥有用户和 XML blob。同样的事情,但生成令牌的一方是你而不是他们。
-
@jon xml 有效负载将用于在用户被重定向到的页面中生成内容。
-
@inuyasha 需要对 xml blob 进行大量处理。在用户被重定向后让另一端请求它会增加太多的延迟。为这个想法 +1。
标签: c# asp.net-mvc-3 http-redirect