当_layouts / Authenticate.aspx在用户身份验证后重定向到应用程序页面时,我们正在丢失查询字符串。
以下示例
http请求如下所示
/ _布局/ Authenticate.aspx?源= http://ourwebsite.com/somepage.aspx?paramapp=testapp¶mdata=testdata
重定向很好,但所有查询字符串都期望第一个被截断。
在上面的示例中,paramdata被截断
答案 0 :(得分:2)
开箱即用的Authenticate.aspx我遇到了同样的问题。
这就是我们所做的。假设您的网址如下所示
... / SomePage.aspx页面参数1 =值1&安培;参数2 =值2&安培;参数3 =值3&安培; ....
创建了Param对象
{
"参数1" :" value1",
"参数2" :" value2",
"参数3" :" value3",
...
}
创建参数的JSON字符串。您可以使用JSON.stringify()函数。对此进行编码并发送参数
JSON.stringify({ "参数1" :" value1", "参数2" :" value2", "参数3" :" value3" })
字符串:" {" Param1":" value1"," Param2":" value2&# 34;,"参数3":"值3"}"
编码字符串:%22%7B%22Param1%22%3A%22value1%22%2C%22Param2%22%3A%22value2%22%2C%22Param3%22%3A%22value3% 22%7D%22
这应该通过Authenticate.aspx,您将能够检索参数。在页面加载时,您可以处理对象并获取各个参数值。
希望这有帮助。
答案 1 :(得分:0)
我没有机会确认这一点,但我一直看到在放入URL时HTML编码的源信息。也许这将是一个很好的起点。如果这不起作用,请发布您正在使用的代码,以便我们了解您是如何做到的。
在相关说明中,您要在源中包含完整地址,您不应该这样做,因为它会打开您的用户以重定向攻击。 Troy Hunt here提供了对此问题以及解决方法的详细解释。