Строгое URL-кодирование для HTTP-ссылки «preconnect» <...> в PHPPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Строгое URL-кодирование для HTTP-ссылки «preconnect» <...> в PHP

Сообщение Anonymous »

Предполагая, что я просто хочу быть вежливым и создать это безопасным способом:

Код: Выделить всё

Link: ; rel="preconnect"
https://developer.mozilla.org/en-US/doc ... aders/Link
Предполагая, что в соответствии с Документация разработчиков Mozilla:

URI (абсолютный или относительный) должен кодировать коды символов больше 255:
Вопрос:
Как бы вы «кодировали коды символов больше 255» в PHP?
Я не ищу что-то, что «работает», мне бы хотелось что-то, что соответствует стандарту (поскольку в Интернете «мы» стараемся быть снисходительными в отношении того, что я принимаю, и жесткими в отношении того, что я даю).
Спасибо. за любую помощь по PHP.

Примеры счетчиков
Rawurlencode() (который следует за RFC 3986) неверен, поскольку он экранирует : и /:

Код: Выделить всё

echo rawurlencode('https://example.com/苗条');
Результат (неправильный):

Код: Выделить всё

https%3A%2F%2Fexample.com%2F%E8%8B%97%E6%9D%A1
URlencode() также неверен, результат тот же (как и ожидалось):

Код: Выделить всё

echo urlencode('https://example.com/苗条');
Результат (неправильный):

Код: Выделить всё

https%3A%2F%2Fexample.com%2F%E8%8B%97%E6%9D%A1
Обходной путь
Я могу просто использовать rawurlencode(), а затем восстановить некоторые символы. Что-то вроде:

Код: Выделить всё

echo str_replace(['%3A', '%2F', '%3C', '%3E'], [':', '/', ''], rawurlencode('https://example.com/苗条'));
Результат (правильный):

Код: Выделить всё

https://example.com/%E8%8B%97%E6%9D%A1
Но, чтобы соблюдать стандарт, мне, вероятно, следует выполнить цикл chr() от нуля до 255, чтобы получить весь rawurlencode(chr(1..255)) восстановить их... так что это становится немного хакерским и излишним.
Текущий подход
Итак, пытаемся быть строгими в отношении «кодирования символов» коды больше 255", поэтому я попробовал зациклить каждый символ (/байт?) и запускать rawurlencode() только в том случае, если результат равен 255, и это работает хорошо:

Код: Выделить всё


Подробнее здесь: [url]https://stackoverflow.com/questions/78671273/strict-url-encode-for-http-link-preconnect-in-php[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Строгое URL-кодирование для HTTP-ссылки «preconnect» <...> в PHP
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Стоит ли использовать preconnect с таблицами стилей?
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Стоит ли использовать preconnect с таблицами стилей?
    Anonymous » » в форуме CSS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Preconnect/DNS-Prefetch Firebase Auth
    Anonymous » » в форуме Javascript
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Какой стек HTTP для использования для клиента, требующего HTTP/1.1, HTTP/2 и HTTP/3
    Anonymous » » в форуме Android
    0 Ответы
    67 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»