[이것은 정확하게 프로그래밍 문제는 아니지만 프로그래머가 가장 잘 대답 할 수있는 퍼즐입니다. 나는 프로 웹마 스터 사이트에서 압도적 인 침묵을 느꼈다.]왜이 % 2B 문자열이 urldecode되고 있습니까?
우리 웹 사이트에 이메일 주소 확인 절차가 있습니다. 이 사이트는 제 문자열로 적절한 키를 생성
mykey
그러므로 바이트의 무리로서 키
&$dac~ʌ����!
그런 다음에 base64 때문에 바이트
JiRkYWN+yoyIhIQ==
의 무리를 코딩하는 것이 코딩 이 키는 HTML 전자 메일에 삽입 할 URL의 쿼리 문자열 값으로 제공 될 예정입니다. 먼저 URLEncode를 입력 한 다음 결과를 HTMLEncode로 지정해야합니다 (HTMLEncoding i의 효과는 없습니다.
click <a href="http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D">here</a>.
Or paste <b>http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D</b> into your browser.
경우 : N 예제의 경우,하지만 내가 좋아하는 이메일의 일부, 뭔가로 전송됩니다 이것은 다음 HTML에 포함되어
JiRkYWN%2ByoyIhIQ%3D%3D
예)를 재 작업을 방해 할 수 없다 받는 사용자가 링크를 클릭하면 사이트에서 요청을 받고 쿼리 문자열 'key'매개 변수의 값을 추출하고 base64에서 디코드하고 해독 한 다음 사이트 로직 측면에서 적절한 작업을 수행합니다.
경우에 따라 클릭 수가 비효율적이라고 신고하는 사용자가 있습니다. 하나는 이러한 사용자는 우리에게 그가 보낸 한 이메일을 전달하고, 검사에 HTML은
의 % 2B 문자열입니다click <a href="http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D">here</a>
Or paste <b>http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D</b> into your browser.
(위의 예 측면에 넣어)로 변환했다 -하지만 아무도 다른 백분율 인코딩 된 문자열은 더하기로 변환되었습니다. (정확한 값은 이고, 적절한 값은입니다. 적절한 SMTP 로그를 보았습니다.)
이 내가 그 바보하고있어 뭔가 내가 볼 수없는,, 또는
일부 메일 클라이언트 :
key=JiRkYWN%2ByoyIhIQ%3D%3D key=JiRkYWN+yoyIhIQ%3D%3D
그래서 나는 가능성의 몇 가지가 있다고 생각 % 2b 문자열을 더하기 기호로 변환하여 사람들의 문제에 실수로 대처하려고 시도합니다. URL 인코딩 및 부호 더하기
1의 경우 - 무엇입니까? 2의 경우 - 이런 종류의 시나리오를 다루는 표준, 알려진 방법이 있습니까?어떤 도움
답장을 보내 주셔서 감사합니다. 위에서 뭘하는지 이해가 안되지만 메일 클라이언트가 이상한 일을해야한다는 것에 동의합니다. – Yellowfog