탈출()
사용하지 마십시오!
escape()
섹션 B.2.1.2 이스케이프에 정의되어 있으며 부록 B 의 소개 텍스트 는 다음과 같습니다.
...이 부록에 명시된 모든 언어 기능과 동작은 하나 이상의 바람직하지 않은 특성을 가지며 레거시 사용이없는 경우이 사양에서 제거됩니다. ...
... 프로그래머는 새로운 ECMAScript 코드를 작성할 때 이러한 기능과 동작이 존재하거나 존재한다고 가정해서는 안됩니다.
행동:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
@ * _ +-. /를 제외한 특수 문자는 인코딩됩니다.
코드 단위 값이 0xFF 이하인 문자의 16 진 형식은 두 자리 이스케이프 시퀀스 %xx
입니다.
코드 단위가 더 큰 문자의 경우 4 자리 형식 %uxxxx
이 사용됩니다. RFC3986에 정의 된대로 쿼리 문자열 내에서는 허용되지 않습니다 .
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
퍼센트 부호는 바로 뒤에 두 개의 16 진수가 오는 경우에만 허용되며 퍼센트 뒤에 오는 u
것은 허용되지 않습니다.
encodeURI ()
작업 URL을 원할 때 encodeURI를 사용하십시오. 전화하세요 :
encodeURI("http://www.example.org/a file with spaces.html")
얻을 :
http://www.example.org/a%20file%20with%20spaces.html
URL을 파괴하고 리턴하기 때문에 encodeURIComponent를 호출하지 마십시오
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
encodeURIComponent ()
URL 매개 변수의 값을 인코딩하려는 경우 encodeURIComponent를 사용하십시오.
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
그런 다음 필요한 URL을 만들 수 있습니다.
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
그리고 당신은이 완전한 URL을 얻을 것입니다 :
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
encodeURIComponent는 '
문자를 이스케이프하지 않습니다 . 일반적인 버그는을 (를) 사용 href='MyUrl'
하여 주입 버그가 발생할 수있는 html 속성을 만드는 것 입니다. 문자열에서 html을 생성하는 경우 속성 따옴표 "
대신을 사용 '
하거나 인코딩 레이어를 추가하십시오 ( '
% 27로 인코딩 가능).
이러한 유형의 인코딩에 대한 자세한 내용은 다음을 확인하십시오. http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
가 아니라는 점을 지적 할 가치가 있습니다. 이 예제는=
and 를 인코딩 할 것이며&
, 의도하지 않은 것입니다!encodeURIComponent
일반적으로 각 키 값 쌍의 값 (각 뒤에있는 부분=
) 에만 별도로 적용됩니다 .