내 애플리케이션에서 URL에 검색어 문자열 (사용자 입력 검색 문자열)을 저장합니다. model={query: 'blabla'}
이 있고 $location.search(model)
을 사용하여 URL을 내 매개 변수로 업데이트합니다. 새로 고침을 누르거나 다른 상태로 돌아와서 돌아 왔을 때 $stateParams.query
을 사용하여 쿼리 매개 변수를 얻은 다음 검색 상자 모델에 할당합니다.
다음과 같은 시나리오를 생각해보십시오 :
사용자 검색 : aa/bb/login?f=Student%20Home11
의 URL : ...?query=aa%2Fbb%2Flogin%3Ff%3DStudent%2520Home11
(즉 슬래시가 % 2F로 인코딩, 그리고 % 20 % (2520)로 인코딩되어 있습니다, 왜냐하면 % 20은 사용자가 입력 한 리터럴 구문이므로 인코딩 된 공간이 아닙니다.)
문제 :
다음과 같은 (이들 상태 사이에서 전환 할 때 URL의 값을 유지하기 위해) UI 라우터에서의 상태 PARAMS에 query
있는 다른 상태로 이동 한 후에 다시 탐색 :
$stateParams.query:
AA % 2Fbb % 2Flogin % 3FF % 3DStudent % 20Home11` %2520
가 %20
디코딩되었지만 다른 인코딩 (%2F
)는 부호화 머문 같은 경우
%20
대신). 두 번째 시나리오에서
,
타격 후가 (URL이 분명히 동일하게 유지) 새로 고침 :
$stateParams
에 : aa/bb/login?f=Student%20Home11
해야으로 - 모든 슬래시 디코딩하고, 또한 '%'기호를 디코딩되었지만 '% 20'은 그대로 유지됩니다 %20
.
이상한 행동을 유발하는 상태 전환에서 어떤 현상이 발생 했습니까?