JSON:为什么正斜杠转义?

2020/09/29 18:21 · javascript ·  · 0评论

这样做的原因是“逃脱了”我。

JSON转义为正斜杠,因此哈希{a: "a/b/c"}序列化为{"a":"a\/b\/c"}而不是{"a":"a/b/c"}

为什么?

JSON不需要您执行此操作,而是允许您执行此操作。它还允许您将“ \ u0061”用于“ A”,但这不是必需的。\/在将JSON嵌入<script>标记中允许帮助,该标记不允许</内部字符串出现,如Seb指出的那样。

Microsoft的一些ASP.NET Ajax / JSON API使用此漏洞来添加额外的信息,例如datetime将以形式发送"\/Date(milliseconds)\/"(Y)

JSON规范说您可以转义正斜线,但是您不必这样做。

不久前我问了同样的问题,不得不自己回答。这是我想出的:

似乎,我的第一个想法(是它的JavaScript根源)是正确的。

'\/' === '/'在JavaScript中,JSON 有效的JavaScript。但是,为什么\z在JSON中不允许其他忽略的转义符(如)?

这样做的关键是阅读http://www.cs.tut.fi/~jkorpela/www/revsol.html,然后
阅读
http://www.w3.org/TR/html4/appendix/notes.html#hB .3.2斜线转义的功能允许将JSON嵌入HTML(如SGML)和XML中。

PHP默认情况下转义正斜杠,这可能就是为什么这种现象如此普遍的原因。我不知道为什么,但可能是因为嵌入字符串"</script>"一个内部<script>标签被认为是不安全的。

可以通过传递JSON_UNESCAPED_SLASHES标志来禁用此功能,但是由于原始结果已经是有效的JSON,因此大多数开发人员将不会使用此功能。

丑陋的PHP!

JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES必须是默认的,而不是一个(奇怪)选项... 怎么说给PHP开发人员?

默认情况下一定是最频繁使用,以及(电流)使用最广泛的标准UTF8。Github或其他地方有多少PHP代码片段需要这种外来的“嵌入HTML”功能?

本文地址:http://javascript.askforanswer.com/jsonweishenmezhengxiegangzhuanyi.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!