답변:
백분율 인코딩이 필요합니다.
> encodeURIComponent('&')
"%26"
따라서 귀하의 경우 URL은 다음과 같습니다.
http://www.mysite.com?candy_name=M%26M
A potentially dangerous Request.Path value was detected from the client (&).
이것은 앰퍼샌드 URL뿐만 아니라 예약 된 모든 문자 에도 적용 됩니다 . 그 중 일부는 다음과 같습니다.
# $ & + , / : ; = ? @ [ ]
아이디어는 &
HTML 문서에서 인코딩과 동일 하지만 컨텍스트는 HTML 문서 내에있는 것 외에도 URI 내에 있도록 변경되었습니다. 따라서 퍼센트 인코딩은 두 컨텍스트 내에서 구문 분석하는 문제를 방지합니다.
이것이 매우 유용한 곳은 다른 URL 안에 URL을 넣어야 할 때입니다. 예를 들어 Twitter에 상태를 게시하려는 경우 :
http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com)
내 트윗에는 예약 문자가 많으 ?'():/
므로 status
URL 매개 변수 의 전체 값을 인코딩했습니다 . 또한 줄 바꿈, 앰퍼샌드 등을 그대로 유지 mailto:
하려면 body
및 subject
매개 변수를 인코딩해야하므로 메시지 본문이나 제목이있는 링크를 사용할 때 유용 합니다.
예약 된 세트 ( "예약 된 문자")의 문자가 특정 컨텍스트에서 특별한 의미 ( "예약 된 목적")를 가지고 있고 URI 체계가 해당 문자를 다른 목적으로 사용해야한다고 말하는 경우 퍼센트로 인코딩되어야합니다. 예약 문자의 퍼센트 인코딩은 문자를 ASCII의 해당 바이트 값으로 변환 한 다음 해당 값을 16 진수 쌍으로 표시합니다. 이스케이프 문자로 사용되는 퍼센트 부호 ( "%")가 앞에 오는 숫자는 예약 문자 대신 URI에서 사용됩니다. 비 ASCII 문자의 경우 일반적으로 UTF-8의 바이트 시퀀스로 변환 된 다음 각 바이트 값이 위와 같이 표시됩니다. 예를 들어 "path"에 사용되는 예약 문자 "/" URI의 구성 요소는 경로 세그먼트 사이의 구분 기호라는 특별한 의미가 있습니다. 지정된 URI 체계에 따라 "/"가 경로 세그먼트에 있어야하는 경우 원시 "/"대신 세 문자 "% 2F"또는 "% 2f"를 세그먼트에 사용해야합니다.
http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
! ' ( ) *
사용하여 URL로 인코딩하지 않았습니다 encodeURIComponent
.
사용해보십시오 http://www.example.org?candy_name=M%26M
.
이 참조 및 Wikipedia에 대한 추가 정보 도 참조 하십시오 .
% 문자를 사용하여 URL에서 허용되지 않는 문자를 '이스케이프'할 수 있습니다. [RFC 1738]을 참조하십시오.
http://www.asciitable.com/ 의 ASCII 값 표 .
당신이 볼 수는 &
16 진수로 26 - 당신은 M의 %의 26M이 필요하므로.
라이브러리를 사용하여 값을 인코딩 할 수없는 경우 http://www.urlencoder.org/ 또는 http://www.urlencode-urldecode.com/ 또는 ...
전체 URL이 아닌 "M & M"값을 입력하십시오. ;-)
Blender 솔루션에 대한 작은 의견을 추가하고 싶습니다.
다음을 수행 할 수 있습니다.
var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M');
출력 :
http://example.com?candy_name=M%26M
이것에 대한 좋은 점은 &뿐만 아니라 특별한 성격을 위해 일하는 것입니다.
예를 들어 :
var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M?><')
출력 :
"http://example.com?candy_name=M%26M%3F%3E%3C"
이 encodeURIComponent 함수를 사용하여 인수를 전달할 수 있으므로 특수 문자 전달에 대해 걱정할 필요가 없습니다.
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana') OR
var someValue = 'Dolce & Gabbana';
data : "param1=getAccNos¶m2="+encodeURIComponent(someValue)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent