이것의 이유는 나를 “탈출”시킨다.
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을 포함하는 기능을 필요로합니까?