[javascript] JSON : 슬래시가 이스케이프 처리되는 이유는 무엇입니까?

이것의 이유는 나를 “탈출”시킨다.

JSON 은 슬래시를 이스케이프하므로 해시 {a: "a/b/c"}{"a":"a\/b\/c"}대신에 직렬화됩니다 {"a":"a/b/c"}.

왜?



답변

JSON은 그렇게 할 필요가 없으며 그렇게 할 수 있습니다. 또한 “A”에 “\ u0061″을 사용할 수 있지만 필수는 아닙니다. 태그에 \/JSON을 임베드 할 때 도움을 허용 하면 Seb가 지적한 것처럼 문자열 내부를 <script>허용하지 않습니다 </.

Microsoft의 ASP.NET Ajax / JSON API 중 일부는이 허점을 사용하여 추가 정보를 추가합니다. 예를 들어 날짜 시간은로 전송됩니다 "\/Date(milliseconds)\/". (왝)


답변

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을 포함하는 기능을 필요로합니까?


답변