flask.json模块的源包含以下行. 什么'\\/'意思,为什么Flask检查这个?
_slash_escape = '\\/' not in _json.dumps('/')
Run Code Online (Sandbox Code Playgroud)
Flask正在使用它来测试它所使用的JSON库是否在不需要时使用转义斜杠.如果库有,那么json.dump('/')将生成'"\\/"'(相当于原始字符串r'"\/"',请参阅此处以获取有关转义字符的说明).
Flask可以选择多个JSON库中的一个,而某些库/版本可以转义正斜杠而其他库则不会. Flask包含解释此问题的评论.
如果库执行转义斜杠,Flask将在转储JSON时撤消它,以实现库之间的一致性.
# figure out if simplejson escapes slashes. This behavior was changed
# from one version to another without reason.
_slash_escape = '\\/' not in _json.dumps('/')
...
def htmlsafe_dumps(obj, **kwargs):
...
if not _slash_escape:
rv = rv.replace('\\/', '/')
...
Run Code Online (Sandbox Code Playgroud)
在HTML中呈现JSON时,Flask仍会转义不安全的HTML字符,因此可能不安全的字符串"</script>"变得"\\u003c/script\\u003e"安全.
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |