2012-04-24 62 views
1

我试图在提交之前在移动客户端中获得一致的URL字符串,并且在服务器收到之后能够为安全校验和目的可靠地添加哈希。目前,我在客户端上添加了URL编码之后的哈希,并尝试在服务器上解码任何东西之前获取URL,但是我得到的已解码的一个字符(句点):使用Python和GAE对编码的URL查询参数进行不一致的解码

当我发布信息时是这样的:

https://myapp.appspot.com/endpt?par=0%3Afirstlast%40gmail%2Ecom&di . . . 

从这个服务器上:

self.request.url 

我得到:

https://myapp.appspot.com/endpt?par=0%3Afirstlast%40gmail.com&di . . . 

而从这个:

self.request.get('par') 

我把它完全解码为我所期望的:

0:[email protected] 

我不知道我怎么能抢URL任何解码发生之前?或者,如果可以抓取整个查询部分已解码的URL,我可以在编码/解码之外进行哈希处理。即我可以在任何时候注入我的哈希值,以获得一致,可靠的结果。谢谢。

+0

为什么不在散列之前完全解码双方? – Eli 2012-04-24 16:52:38

+0

谢谢@Eli。对任何编码(即在客户端编码之后和在服务器解码之前)进行散列的原始思想对于解码不一致性的任何编码都是免疫的。但考虑到这个问题,我确实继续前进,并将编码之外的哈希移动到了“外部”,尽管我最终调整了编码端,但似乎都起作用了。 – leontx 2012-04-25 13:35:00

回答

0

您可以直接从您的WSGI环境中获取此信息,但我建议您改为从Amazon's book中取出一个页面,并定义用于签署URL的规范格式。然后,您可以在两端以相同的方式对URL进行编码和格式化,而且您不必依靠框架和代理的变幻莫测来避免干扰网址的简单编码细节。