Какой-либо способ закодировать URL в вихревой команде?

Я ничего никогда не настраивал на виртуальном хосте, но вот некоторая информация об общем HTTPS:

HTTPS использует комбинацию HTTP и SSL (см. статью Википедии здесь: http://en.wikipedia.org/wiki/HTTP_Secure). HTTPS не является действительно своим собственным протоколом серовато-синий, а скорее нормальный HTTP, работающий на туннеле SSL.

HTTPS использует CA (Сертификат Authories) и PKI (Инфраструктура открытых ключей), чтобы гарантировать, что пользователи могут 'доверять' сайту. Необходимо создать сертификат открытых ключей для веб-сервера, и это должно быть подписано доверяемым CA (таким как VeriSign). Для получения доверяемого сертификата, это может стоить Вам ежегодной платы для поддержания.

Если Вы не пройдете доверяемый CA, то пользователи получат предупреждение, когда они попытаются соединиться с Вашим сайтом. Это часто может времена приводить пользователей отклоняться от Вашего сайта, потому что они могли бы рассматривать его как угрозу безопасности.

Кроме того, имейте в виду, что, в то время как HTTP использует порт 80 по умолчанию, HTTPS использует 443 поэтому, если у Вас есть какое-либо перенаправление портов/, порт, блокирующий Вас, должен будет гарантировать, что это открыто, чтобы Вы соединились. Для использования HTTPS, необходимо будет также удостовериться, чтобы Вы ввели его в URL, когда Вы перейдете на сайт, иначе он, вероятно, примет значение по умолчанию к использованию HTTP.

Править: Вот хорошее введение в то, как HTTPS работает: http://securityworkshop.blogspot.com/2009/01/how-httpsssl-works-part-1-basics.html

113
14.08.2013, 19:03
2 ответа

curl кодирование URL поддержек внутренне с --data-urlencode:

$ curl -G -v "http://localhost:30001/data" --data-urlencode "msg=hello world" --data-urlencode "msg2=hello world2"

-G также необходимо для добавления данных к URL.

Заголовки трассировки

> GET /data?msg=hello%20world&msg2=hello%20world2 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu)
> Host: localhost
> Accept: */*
177
27.01.2020, 19:29
  • 1
    Что, если msg = '=' ? –  Aurélien Ooms 15.10.2015, 12:14
  • 2
    Из вихревого документа: Обратите внимание, что заглавная роль (сообщение в этом случае), как ожидают уже, будет закодирована URL. Также можно указать что-то как - запрос УДАЛЯЕТ, и это действительно был бы удалить метод вместо ПОЛУЧЕНИЯ. Не уверенный, если порядок имеет значение. –  Federico 03.02.2016, 02:21
  • 3
    @damphat, что происходит, когда запрос имеет два параметра как "msg1=Hello&msg2=World"? Это закодирует & между параметрами, которые означали бы неправильную вещь отправить к серверу –  Ganesh Satpute 28.07.2016, 16:08
  • 4
    @GaneshSatpute для Perl: используйте несколько --data-urlencode параметры, один для каждой пары "ключ-значение". –  Martijn Pieters 09.08.2016, 16:04
  • 5
    @MartijnPieters Да. это работает. Спасибо за ответ –  Ganesh Satpute 10.08.2016, 09:38
 curl -G "$( echo "$URL" | sed 's/ /%20/g' )"

Где $URL URL, на котором Вы хотите сделать переводы.

Существует также больше чем один тип перевода (кодирующего) Вас, может иметь в URL, таким образом, можно хотеть сделать:

curl -G "$(perl -MURI::Escape -e 'print uri_escape shift, , q{^A-Za-z0-9\-._~/:}' -- "$URL")"

вместо этого.

6
27.01.2020, 19:29
  • 1
    Отметьте это echo "$URL" | sed 's/ /%20/' не сделает правильной вещи, если будет % символы в URL. Кроме того, пробелы обычно кодируются как ++ как %2b). Я рекомендую решение для Perl, которое надежно. –  Gilles 'SO- stop being evil' 15.08.2013, 01:02
  • 2
    sed 's/ /%20/g' если у Вас есть больше чем одно пространство для перевода... –  sebthebert 06.02.2015, 16:45

Теги

Похожие вопросы