Как включить специальные символы в строки запроса - PullRequest
23 голосов
/ 13 мая 2010

Следующий URL работает нормально:

http://localhost/mysite/mypage?param=123

Однако, если я хочу поместить некоторые специальные символы в `param like?, /, \, То URL-адрес будет:

http://localhost/mysite/mypage?param=a=?&b=/

или

http://localhost/mysite/mypage?param=http://www.mysite.com/page2?a=\&b=...

, который не будет работать. Как мне решить эту проблему?

Ответы [ 6 ]

21 голосов
/ 13 мая 2010

Вы должны кодировать специальные символы в URL. Смотри: http://www.w3schools.com/tags/ref_urlencode.asp

7 голосов
/ 13 февраля 2016

Вам необходимо закодировать параметры запроса, прежде чем объединять их, чтобы сформировать URL. Здесь необходима функция encodeURIComponent . Например,

URL, который вам нужно создать:

http://localhost/mysite/mypage?param=a=?&b=/

Теперь, предполагая это? и / приходит в качестве переменных, вам нужно кодировать их перед вводом URL. Итак, давайте создадим ваш URL с помощью этой функции (я ожидаю два параметра запроса):

 var q1 = "a=?"; //came from some input or something
    var q2 = "/"; //came from somewhere else

    var faultyUrl =  "http://localhost/mysite/mypage?param="+ q1 +"&b=" + q2; 
// "http://localhost/mysite/mypage?param=a=?&b=/"


    var properUrl =  "http://localhost/mysite/mypage?param="+ encodeURIComponent(q1) +"&b=" + encodeURIComponent(q2); 
//"http://localhost/mysite/mypage?param=a%3D%3F&b=%2F"

Эта функция в базовом JS и поддерживается во всех браузерах.

3 голосов
/ 13 мая 2010

В JavaScript вы можете использовать функцию encodeURI () .

ASP имеет функцию Server.URLEncode () .

HttpServerUtility.UrlEncode в .NET

2 голосов
/ 29 декабря 2015

Простой способ передать значение QueryString с помощью специального символа с помощью JavaScript:

var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
2 голосов
/ 13 мая 2010

Вам необходимо использовать специальные символы кодирования, см. эту страницу для справки.

Если вы используете PHP, для этого есть функция, которая называется urlencode () .

0 голосов
/ 13 мая 2010

Вам необходимо заменить символы URL-объектами. Некоторая информация здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...