【发布时间】:2011-11-12 23:14:04
【问题描述】:
我正在尝试将加密的查询字符串传递给另一个 URL。
下面的代码给了我这个错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u04b7' in 位置 7:序数不在范围内(128)
加密模块为PyCrypto
在 App Engine 上运行 Python 2.5.2
第 A 页
import Crypto
from Crypto.Cipher import ARC4
obj=ARC4.new('stackoverflow')
msg = 'This is my secret msg'
encrypted = obj.encrypt(msg);
self.redirect('/pageb?' + urllib.urlencode({'q': encrypted}))
第 B 页
import Crypto
from Crypto.Cipher import ARC4
encrypted = self.request.get('q')
obj=ARC4.new('stackoverflow')
decrypted = obj.decrypt(encrypted)
get_data = cgi.parse_qs(decrypted)
self.response.out.write(decrypted)
self.response.out.write(pprint.pprint(get_data))
追溯
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\_webapp25.py", line 701, in __call__
handler.get(*groups)
File "C:\Program Files\Google\google_appengine\demos\guestbook\guestbook.py", line 47, in get
decrypted = obj.decrypt(encrypted)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u04b7' in position 7: ordinal not in range(128)
【问题讨论】:
-
这似乎是事实陈述,附带最少的抵押品。尝试提出一个问题,由有用的信息(如回溯)支持。
-
@JohnMachin 谢谢,我已经更新了帖子。
-
信息已经有了,但问题仍然是最好的暗示。
-
为什么要在自己的应用程序中重定向到另一个 URL,试图在请求之间加密内容,而不是在请求中调用所需的内部 API 位或使用会话控制在服务器端存储敏感信息?这似乎是不必要的复杂。