相关疑难解决方法(0)

HTTP协议使用哪种编码?

当浏览器向Web服务器发送HTTP请求时,使用什么编码对线路上的HTTP协议进行编码?是ASCII吗?UTF8?还是UTF16?或者它是否指定了它以预定义格式使用的编码(在进行任何解码之前?)

PS我不是在询问请求/响应的实际有效负载(例如HTML).我问的是请求行(即GET /index.html HTTP/1.1)和标题(即Host: google.com)

protocols http network-protocols http-headers

30
推荐指数
2
解决办法
1万
查看次数

Flask - 标题未转换为unicode?

我正在使用以下方法在python中开发一个小型Web服务:

  • 烧瓶(v.8.8)
  • 风暴ORM(v.0.19)
  • Apache与mod_wsgi

我有一个自定义HTTP标头,Unison-UUID我正在使用它来检索我的数据库中的信息.

这是(稍为简单的重写)片段,我遇到了麻烦:

uuid = flask.request.headers['Unison-UUID']
store = storm.locals.Store(my_database)
user = store.get(models.User, uuid)
Run Code Online (Sandbox Code Playgroud)

这个班User或多或少是这样的:

class User(Storm):
    uuid = Unicode(primary=True)
    # Other columns....
Run Code Online (Sandbox Code Playgroud)

上面的代码以下列方式失败:

  File "/Users/lum/Documents/unison-recsys/www/api/unison/unison.py", line 27, in decorated
    user = g.store.get(models.User, uuid)
  File "/Users/lum/Documents/unison-recsys/venv/lib/python2.6/site-packages/storm/store.py", line 165, in get
    variable = column.variable_factory(value=variable)
  File "/Users/lum/Documents/unison-recsys/venv/lib/python2.6/site-packages/storm/variables.py", line 396, in parse_set
    % (type(value), value))
TypeError: Expected unicode, found <type 'str'>: '00000000-0000-0000-0000-000000000009'
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么会这样,我能做些什么呢.我认为Flask是100%unicode.

我找到的快速修复方法是解码标头值,即uuid = uuid.decode('utf-8').这真的需要做什么?这看起来有点骇人听闻.有没有办法直接获得unicode,而无需手动"解码"?

python unicode werkzeug flask storm-orm

7
推荐指数
1
解决办法
3730
查看次数