【发布时间】:2013-07-15 21:20:39
【问题描述】:
我们的网站由我们称为“Start.aspx”的 3 个主要页面组成,然后是一个内容 iframe,用户可以在其中进行几乎所有的网站交互。
不过,最近,我不得不实现在不同产品的 Start.aspx 页面之间跳转并自动将内容 iframe 更改为指定页面的功能。
实际的功能工作得很好,但我们遇到的问题是完整的查询字符串被暴露了。因为我们在内容 iframe 中加载所有页面,所以在常规站点使用期间页面 URL 保持在“Product/Start.aspx”。
但是,这个新功能将查询字符串传递给 Start.aspx(它具有适当的解析器来在内容 iframe 中加载请求的页面),我们需要将该 URL 保持为“Start.aspx”。
到目前为止,我已经研究了URL Rewriting,因为每个产品的着陆页都是“[Product]/Start.aspx”,所以它会抛出错误。我查看了不同的URL Rewriting 解决方案,以及ScottGu's blog post on routing。
问题在于这些解决方案似乎用于简化导航,例如将“Blogpost.aspx?Year=2013&Month=07&Day=15”转换为“Blogpost.aspx/2013/07/14”这不是我们想要的。我们并不是想通过 URL 简化导航,我们实际上只是想完全隐藏我们的查询字符串。
一旦内容 iframe 从初始查询字符串。我们不需要考虑每一页。我们只需要将其作为总体规则。 90% 的情况下它不会成为问题,因为大多数正在完成的工作不会在没有用户切换产品的情况下从一个产品跳到另一个产品(这是以专门使用“Response.Redirect(”)的方式完成的[产品]/Start.aspx")"。
一旦从 Querystring 参数加载了内容 iframe,我们就不再需要它们了。其余功能通过 iframe 运行,没有任何问题。
这是我想多了,还是我要求的东西不太可行?
【问题讨论】:
-
你为什么要隐藏查询字符串?如果您的内部框架有一个查询字符串,那么它仍然是公开的,只需额外点击即可获得它。
-
是的,你我都知道,但这是功能规范的一部分。
-
您能否让起始页使用 AJAX 进行附加查询,这样用户就不会总是看到新的 URL 是什么?除非他们使用 Fiddler、Wireshark 或其他东西来拦截流量。
-
嗯。也许是时候从 .NET 2.0 升级了?它现在大约八岁了。