2016-07-31 7 views
0

내 URL에 전달하기 위해 인코딩 된 값을 생성합니다. 문제는 Google 검색 엔진 최적화 관리자가 애플리케이션을 구성하여 소문자 URL을 전달하고 구성을 변경하지 않는다고 말합니다. 지금은 어떻게 든 자신의 문자 코드에 의해 인코딩 얻을 내 URL, 즉 대문자, 또는 전체 문자열을 인코딩, 그래서 예를 들어URL 대소 문자를 구분하지 않는 경우 대소 문자 구분 :

, 파멸의 주요 값없이 전달할 수 있습니다, 내 결과 64 기수 문자열은 다음과 같습니다 :

aHR0cDovL2xvY2FsaG9zdDoxMzUwL2hvdGVscy9nMy8xMzk1LTA1LTEwLzEvOTI3MjIyZmY 
but it turn to be like this, when is passed to controller: 
ahr0cdovl2xvy2fsag9zddoxmzuwl2hvdgvscy9nmy8xmzk1lta1ltewlzevoti3mjiyzmy 

읽을 수없는 경우에는 해독하는 동안 문제가 발생합니다.

+0

시도하는 양식 필드 값입니까? 여기 엔코 드하는거야? 그렇다면 왜 URL에 포함시키고 POST하지 않는가? – sachin

+0

@sachin 독자가 게시하지 않기 때문에 (또는 마지막으로 get과 함께 제공되는 모든 샘플) – deadManN

+0

'우리 SEO 관리자가 소문자 URL을 전달하기 위해 애플리케이션을 구성하고 그는 구성을 변경하지 않을 것이라고 말합니다 '- IT 담당자가 자신의 인터넷 액세스를 구성하여 Youtube URL을 소문자로 만들도록하십시오. – GSerg

답변

1

제어에서 소문자로 변환되는 경우 base64를 사용하여 인코딩 할 수 없습니다. base64는 대문자 사용에 의존합니다.

관리자가 입력 또는 발신 쿼리 문자열 매개 변수가 잘못 입력되었다고 주장하는 경우 URI 형식, 특히 query string 섹션을 위반했다는 사실을 알려야합니다. 물론 내부 URI에서 소문자 만 원하는지 여부는 궁극적으로 내부 회사 선택에 달려 있지만 URI를 처리하는 다른 응용 프로그램이 이와 같이 작동한다고 가정하면 안됩니다.

@sachin이 위에서 언급 한 것처럼, POST 요청을 GET 대신 할 수 있고 (지금 당장 생각한 것처럼), 관리자가 메시지를 보낼 때 해당 요청을 처리하지 않는다면/: POST를 통해이 데이터를 보냅니다.

또는 대신 Base32를 사용하여 대문자 만 사용할 수도 있지만 (지금은 Base32) 문자열을 디코딩하기 전에받은 값을 대문자로 변환하면됩니다. 이것은 꽤 우스운 해결책입니다 ...

"LOL"은 Base32에서 "NRXWY ==="로 인코딩되어 다음 "nrxwy ===" 해독하기 전에 대문자를 "NRXWY ==="로 되 돌리십시오.

다음은 Base32 인코딩을 두 NuGet 패키지입니다 : RFC4648 here에 따라

  1. Base32와 저자가 그것을 테스트하고 제대로 작동의 주장.

  2. zBase32 here을 지원하기 때문에 매력적으로 보이는 또 다른 패키지 인 zBase32의 장점은 이미 소문자 만 사용한다는 것입니다. 따라서 대소 문자를 변경하는 것에 대해 걱정할 필요가 없습니다. 포터/저자는 zBase32 인코딩을하는 방법에 대한 지침을 포함하고있다

의 모두이 (Base32와 zBase32)이 Base64로 문자의 부분 집합 사용하므로 모두가 charcaters의 모든 URI를 함께 잘 작동합니다 사용 된 URI는 유효합니다 (utf-8 내용은 바이트를 인코딩하기 때문에 관련이 없습니다. 따라서 Base32에서 디코딩 할 때 동일한 바이트를 다시 가져옵니다)

+0

잘 알려주지 만, 아무런 효과가 없습니다. 어떻게 든 보았습니다. base64 자체가 아닌 유효한 부호를 사용하여 대문자 숯을 다시 인코딩 할 수 있습니다. 무슨 base32 사용 BTW? 더 많은 문자 인코딩이 필요합니까? 예를 들어 base64는 +,/및 = 만 필요합니다. 둘째, 우리는 utf-8 문자 기반 시스템의 사용자이며, base32가이 문제를 지원합니까? 셋째, C# 언어로 구현 된 base32입니까? – deadManN

+0

나는 대답을 업데이트했다. 그러나 짧은 버전은 더 적은 인코딩 charcters를 사용한다. 그렇다. 여전히 utf-8을 지원한다. 그렇다. C#으로 구현되지만, 아마도 NuGet에서 라이브러리를 가져와야 할 것이다 : P – starlight54

+0

두 번째 버전을 사용했습니다. 대/소문자를 구분하여 수정했습니다. – deadManN