programing

AngularJS URL의 모든 슬래시가 %2로 변경되었습니다.f

cafebook 2023. 3. 9. 22:20
반응형

AngularJS URL의 모든 슬래시가 %2로 변경되었습니다.f

앵귤러에게 큰 문제가 생겼어요JS 라우팅

최근까지 다음과 같은 경로로 모든 것이 양호했습니다.

$routeProvider.when('/album/:albumId', {
    controller: 'albumPageController',
    templateUrl: 'views/album.html'
});

href를 사용합니다.

<a href="/#/album/{{album.id}}">Link</a>

단, 현재 모든 슬래시가 암호화되어 있습니다.%2F.

링크를 클릭하거나localhost:8000/#/album/1URL이 다음과 같이 변경됩니다.

http://localhost:8000/#%2Falbum%2F1

이 문제를 해결하기 위해 몇 가지 방법을 시도했습니다.

href 대신 ng-href 사용, 첫 번째 사용 안 함 / (즉,href="#/album/{{album.id}}"Windows 10에서 localhost가 아닌 Homesead localhost(Laravel의 Linux vagrant Machine)에서 앱 실행

어떤 도움이라도 주시면 감사하겠습니다!

%2F포워드 레이트의 퍼센티지 큐입니다./성격.

이 문제는 AngularJS 1.6에서 해시방 URL의 디폴트가 변경되어 있는 것과 관련이 있습니다.$location서비스.

이전 동작으로 되돌리려면:

appModule.config(['$locationProvider', function($locationProvider) {
  $locationProvider.hashPrefix('');
}]);

자세한 내용은 SO: angularjs 1.6.0(최신) 루트가 동작하지 않는 것을 참조해 주세요.

가장 간단한 해결방법은 다음과 같은 기능을 추가하는 것입니다.!클라이언트측 URL(HTML5 모드를 사용하지 않는 경우, 아마 여기에 있을 때 사용할 수 있습니다).

클라이언트측에서는, 다음과 같이 URL 를 갱신합니다.

#/foo/bar>#!/foo/bar

그리고 당신이 가지고 있기 때문에#서버측 라우팅과 경합하는 문제는 없습니다.모두 행복하세요.

파티에는 조금 늦었지만, URL에 '!'를 추가하는 것은 문제 없습니다.이것도 조금 신경이 쓰였어요.이것은 최신 AngularJs 1.6.x의 변경 사항으로, 구글은 SPA에 해시 후에 '!'를 붙이도록 요구한다고 읽었습니다.그 결과 내 경로는 정상적으로 표시되지만 내 내비게이션에서는 '!'를 참조에 추가합니다.예를 들어 다음과 같습니다.

<ul>
    <li><a href="#!/">Home</a></li>
    <li><a href="#!/page2">Page 2</a></li>
    <li><a href="#!/page3">Page 3</a></li>
    <li><a href="#!/page4">Page 4</a></li>
</ul>

도움이 됐으면 좋겠네요.

안부 전해 주세요!

저는 문제를 해결했습니다.

app.config(function($locationProvider) {

$locationProvider.hashPrefix('');
$locationProvider.html5Mode({
    enabled: false,
    requireBase: true
  });
});

<a href="#/mylink/"> <span>MyLink</span></a>

http://blablabla.co:8888/blabla # / mylink /

이게 도움이 됐으면 좋겠다.

슬래시 부호화는 디세블로 할 수 있습니다.

$urlMatcherFactoryProvider.type('SlashFix', {
  raw:    true,
});


$stateProvider
      .state('content',{
       url: '/{slug:SlashFix}'
       ...

      })

https://www.coditty.com/code/angular-ui-router-replacing-slash-with-2f-quick-fix에 기재되어 있습니다.

html5 모드를 사용 중이므로 라우팅에 해시 기호가 필요하지 않으므로 링크에서 해시 기호를 제거합니다.

<a href="/#/album/{{album.id}}">Link</a>

된다

<a href="/album/{{album.id}}">Link</a>

언급URL : https://stackoverflow.com/questions/41272314/angularjs-all-slashes-in-url-changed-to-2f

반응형