Символ % кодируется как %25 в URL при каждой перезагрузке

Я использую Spring-Data-Rest и Angular 2

% код кодирования URL %25 (http://www.w3schools.com/tags/ref_urlencode.asp )

Во-первых;

http://localhost:4200/members/http%3A%2F%2Flocalhost%3A8080%2FErPApI%2Forganizations%2F1/detail

при переходе по этому URL-адресу и повторной загрузке страницы или копировании и вставке ссылки на новую вкладку

% снова закодировать %25. Он делает каждую перезагрузку.

http://localhost:4200/members/http%253A%252F%252Flocalhost%253A8080%252FErPApI%252Forganizations%252F1/detail

Итак, я потерял идентификатор участника. Как я могу снова заблокировать кодирование%?


person vangoo    schedule 13.02.2017    source источник


Ответы (2)


Я использовал следующий метод, когда я получаю ссылку.

 decodeURIComponent()
person vangoo    schedule 11.05.2017
comment
Где вы использовали этот метод.? - person Abijith Ajayan; 06.02.2020

Я добавляю пользовательский UrlSerializer поставщика в корневой AppModule.

Как это...

// custom-url-serializer.ts
import { DefaultUrlSerializer, UrlSerializer, UrlTree } from '@angular/router';
export class CustomUrlSerializer implements UrlSerializer {
    private defaultUrlSerializer: DefaultUrlSerializer = new DefaultUrlSerializer();

    parse(url: string): UrlTree {
        url = url.replace(/\%/g, '%25');
        return this.defaultUrlSerializer.parse(url);
    }

    serialize(tree: UrlTree): string {
        return this.defaultUrlSerializer.serialize(tree).replace(/%25/g, '%');
    }
}



// app.module.ts
import { NgModule } from '@angular/core';
import { CustomUrlSerializer } from './shared/custom-url-serializer';

@NgModule({
    declarations: [
        AppComponent,
    ],
    imports: [
        ...
    ],
    bootstrap: [AppComponent],
    providers: [
        {
            provide: UrlSerializer,
            useClass: CustomUrlSerializer,    // <-- Here!
        },
    ],
})
export class AppModule { }
person Margaux    schedule 13.04.2018