2012-03-22 36 views
4

我正在使用標準的幾行代碼從http獲取請求中檢索密鑰,並使用它從數據存儲中獲取某些內容,但遇到了一個問題,之前遇到過。這隻發生在實時(已部署)版本上 - 在開發服務器上運行代碼時沒有問題。BadKeyError:無效的字符串鍵不正確填充

的代碼片斷:

imgId = self.request.args.get("img_id") 
    imageInfo = db.get(imgId) 

和誤差例如:

BadKeyError: Invalid string key ahFjeWJlcm5hdXRzcHJvamVjdHINCxIFSW1hZ2UY1oYDDA=. Details: Incorrect padding 

如果我的db.get方法就會前右登錄imgId的值,它是正確的(沒有附加的「= 「來自調試消息)。有誰知道可能是什麼原因造成的?

+0

您是否嘗試過記錄比較輸入字符串與測試結果的結果?這顯然不完全一樣,或者你不會得到這個錯誤。 – 2012-03-23 08:28:18

+0

好,所以在這種情況下傳遞給get請求的實際值是由於某種原因添加了前綴爲%20的空白 - 雖然這個空格並沒有顯示在獲取請求的任何一端,所以我真的在損失爲什麼它出現... – Cerzi 2012-03-23 14:16:41

+0

我認爲你在大聲思索,因爲如果沒有看到有問題的代碼和更多的調試細節,我們無法提供幫助。 – 2012-03-23 15:28:21

回答

7

我猜url編碼。 請嘗試:

imgId = urllib.unquote(self.request.args.get("img_id")) 

可能是空格嗎?
嘗試:

imgId = urllib.unquote(self.request.args.get("img_id")).strip() 
0

如果不是URL編碼,那麼也許有事情做與args變量。

如果它是一個HTTP GET請求:

imgId = self.request.GET.get("img_id") 
imageInfo = db.get(imgId) 

如果它是一個HTTP POST請求:

imgId = self.request.POST.get("img_id") 
imageInfo = db.get(imgId) 
+0

我應該提到我使用Tipfy,因此參數變量。 – Cerzi 2012-03-23 13:58:50

0

這是一個空白字符的出現在我的神社渲染代碼,並通過一個愚蠢的情況下,一個%20一起。對不起所有!

+3

啊,就像我說的? – 2012-03-24 10:02:10