2016-12-19 2 views
0

Я пытаюсь опубликовать данные в URL запроса через HTTP, когда я пытаюсь передать по электронной почте, то он преобразует @ в % 252540.@ преобразовывается в строку при переходе в URL

Вот URL:

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/[email protected]'); 

Пожалуйста, обратите внимание на данной скрипкой:

https://jsfiddle.net/amrindernoor/b8uvwr86/

Как я могу избежать этой проблемы?

+0

Что делает 'php' тег здесь делать? –

+0

Я думаю, что ваша новая вкладка имеет перенаправление – Beginner

+0

Возможный дубликат [Кодировать URL-адрес в JavaScript?] (Http://stackoverflow.com/questions/332872/encode-url-in-javascript) – Tiger

ответ

4

Ваш адрес https://secure.rspcdn.com/xprr/red/PID/3428/SID/[email protected] имеет несколько внутренних переадресаций.

В каждом перенаправлении он кодирует уже закодированное электронное письмо.

Вот краткое объяснение того, что именно является причиной проблемы:

Сначала @ передается как есть.

Во время первого перенаправления он кодируется до %40, который по-прежнему действует.

Здесь после каждого перенаправления он снова закодируется, в результате чего %252540 в качестве конечного значения.

Ниже снимок экрана, который даст вам ясную картину этого

enter image description here

+0

ах! понял, но какое решение сейчас? так как у меня нет доступа к серверу, где существует второе перенаправление. –

+0

Нет другого решения, кроме как связаться с заинтересованным лицом, чтобы предоставить вам доступ, чтобы материал кодирования можно было устранить из-за основной причины. – Samir

0

Использование encodeURIComponent для параметра Адрес электронной почты:

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('[email protected]')) 

Правильное значение для параметра электронной почты (возвращенного encodeURIComponent) является ˙amrinder% 40odz.com˙, который будет интерпретироваться как [email protected] на стороне сервера.

После изменения этот URL-адрес возвращает перенаправление 302 на https://www.rsptrack.com/click.track?CID=287283&AFID=276422&SID=rentown&SID2=n&SID3=n&email=amrinder%40odz.com&zid=f197f1cfb16ae7d56748bca35ebe7658&tkp=3428&tku=4160&tks=86073803, который, как представляется, содержит правильное значение для параметра электронной почты.

+0

Я пробовал это, без помощи, вы также можете попробовать то же самое в скрипке, предоставленной мной. –

+0

все тот же результат, вот обновленная версия скрипта: https://jsfiddle.net/b8uvwr86/1/ –

+0

@Insomania удаляет пробелы после символа '=' ... – m0sa

0

Вы можете использовать функцию encodeURIComponent(), чтобы сделать это. Эта функция кодирует специальные символы. Кроме того, он кодирует следующие символы: ,/? : @ & = + $ #

window.open('https://secure.rspcdn.com/xprr/red/PID/3428/SID/rentown?email=' + encodeURIComponent('[email protected]')) 

Примечания:

Используйте функцию decodeURIComponent() для декодирования кодированного URI компонента.

Смежные вопросы