ASP.NET (또는 IIS?)가 URL 인코딩 된 암호 텍스트 (404)를 승인 스크립트로 전달하는 대신 디코딩하는 것을 어떻게 피합니까?

StackOverflow https://stackoverflow.com/questions/578548

문제

ASP.NET MVC에서 사용자가 SQL 멤버십 제공 업체를 사용하여 멤버십을 등록하는 웹 응용 프로그램을 작업하고 있습니다. 등록하면 시스템에 넣지 만 승인되지 않았습니다. 그런 다음 코드는 주어진 이메일을 사용하여 승인 이메일을 사용자에게 보냅니다.

BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
    ...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";

그러나 사용자가 링크를 클릭하면 다음 오류가 발생합니다.

설명 : HTTP 404. 귀하가 찾고있는 자원 (또는 그 종속성 중 하나)을 제거하거나 이름이 변경되었거나 일시적으로 사용할 수 없었을 수 있습니다. 다음 URL을 검토하고 철자가 정확한지 확인하십시오.

요청 된 url :/approve/k/9ihry43os =

문제는 링크를 보내기 전에 URL을 인코딩하는 경우 작업을 호출하려고하기 전에 왜 디코딩 되는가? 내 브라우저의 URL은 실제로 'http : // localhost : 1091/approve/k%2f9ihry43os%3d'오류가 발생할 때. 내 라우팅은 올바르게 설정되어 있지만 URL의 암호화 된 문자열에서 추가 '/'를 설명하지 않습니다 (어쨌든 거기에 없어서는 안됩니다.)

도움이 되었습니까?

해결책

Urlencode를 사용하는 대신 Base64로 인코딩 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top