Я пытаюсь передать параметры URL-адресу, который выглядит следующим образом:
http://www.foobar.com/foo?imageurl=
И я хочу передать такие параметры, как URL-адрес изображения, который создается самим другим API, а ссылка на изображение выглядит так:
http://www.image.com/?username=unknown&password=unknown
Однако, когда я пытаюсь использовать URL:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
Не работает.
Я также пробовал использовать encodeURI()
и encodeURIComponent()
на imageURL, и это тоже не работает.
javascript
url
encodeuricomponent
Апур Саксена
источник
источник
Ответы:
С PHP
результат
С помощью Javascript:
ДЕМО: http://jsfiddle.net/Lpv53/
источник
Используя новый ES6
Object.entries()
, он делает немного забавным вложеннымmap
/join
:источник
Вы не должны использовать
encodeURIComponent()
илиencodeURI()
. Вы должны использоватьfixedEncodeURIComponent()
иfixedEncodeURI()
, согласно документации MDN.Что касается
encodeURI()
...Что касается
encodeURIComponent()
...Итак, в чем разница?
fixedEncodeURI()
иfixedEncodeURIComponent()
преобразовать тот же набор значений, ноfixedEncodeURIComponent()
и преобразует этот набор:+@?=:*#;,$&
. Этот набор используется вGET
параметрах (&
,+
и т. Д.), Тегах привязки (#
), тегах с подстановочными знаками (*
), частях адреса электронной почты / имени пользователя (@
) и т. Д.Например - если вы используете
encodeURI()
,user@example.com/?email=me@home
не будет правильно отправлять второй@
на сервер, за исключением того, что ваш браузер обрабатывает совместимость (что, естественно, часто делает Chrome).источник
"except for your browser handling the compatibility"
?site.com?formula=a+b=c
работает в продюсированииformula=>a+b=c
, это нарушает спецификацию, но если это работает, это потому, что Chrome / etc. может обнаружить сбой спецификации URL-адреса и т. д., и т. д., w /user@site.com?email=user@site.com
.