_layouts/Authenticate.aspx在Sharepoint 2010中重定向时丢失查询字符串参数


当_layouts/Authenticate.aspx在用户身份验证后重定向到应用程序页面时,我们将丢失查询字符串。

下面显示的示例

http请求显示在下方

/_layouts/Authenticate.aspx?来源=http://ourwebsite.com/somepage.aspx?paramapp=testapp&paramdata=测试数据

重定向发生得很好,但除了第一个之外的所有查询字符串都会被截断。

在上面的例子中,paramdata被截断

我在开箱即用的Authenticate.aspx.中也遇到了同样的问题

这就是我们所做的。假设你的URL看起来像这个

/SomePage.aspx?Param1=值1&Param2=value2&Param3=值3&。。。。

  1. 创建了一个Param对象
    {"Param1":"value1","Param2":"value2","Param3":"value3",…
    }

  2. 创建参数的JSON字符串。您可以使用JSON.stringify()函数。对此进行编码并发送参数

JSON.stringify({"Param1":"value1","Param2":"value2","Param3":"value3"})

字符串:"{"Param1":"value1","Param2":"value2","Param3":"value3"}">

编码字符串:%22%7B%22Param1%22%3A%22value1%22%2C%22Param2%22%3A22value2%22%2C+22Param3%22%3A+22value3%22%7D%22

  1. 将其作为参数传递到目标页面…/SomePage.aspx?参数=%22%7B%22Param1%22%3A%22value1%22%2C%22Param2%22%3A+22value2%22%2C+22Param3%22%3A22value3%22%7D%22

这应该通过Authenticate.aspx,您将能够检索参数。在页面加载时,您可以处理对象并获取各个参数值。

希望这能有所帮助。

我还没有机会确认这一点,但我总是看到源信息HTML在放入URL时编码。也许这将是一个很好的开始。如果这不起作用,那么请发布您正在使用的代码,这样我们就可以看到您是如何做到这一点的。

在一个相关的注意事项上,你在源中包含了完整的地址,你真的不应该这样做,因为它会让你的用户重定向攻击。Troy Hunt在这里提供了关于这个问题以及如何解决这个问题的详细解释。

最新更新