Как я могу узнать, как браузеры кодируют URI, введенные в адресную строку - PullRequest
0 голосов
/ 12 февраля 2020

Документы MDN для encodeUri и encodeUriComponent описывают, что одинарные кавычки не кодируются, так как они действительны в URL без кодирования, и это работает во всех браузерах одинаково.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

Однако адресные строки браузера, похоже, имеют свои собственные правила для кодирования URI. Если вы поместите одиночную кавычку в URI в Chrome или Safari, она закодирует его в% 27, Firefox, похоже, сделает то же самое, а затем, возможно, изрядно напечатает его снова как символ одинарной кавычки

т. е. перед переходом к URL-адресу в chrome: enter image description here

после нажатия введите / перейдите к URL-адресу enter image description here

I не могу найти никакой документации о том, как браузеры кодируют их в своих адресных строках. Я сталкивался с этим только с одинарной кавычкой, но мне было любопытно, почему это отличается от реализации javascript для кодирования и почему она вообще кодируется, когда spe c говорит, что они в порядке.

1 Ответ

0 голосов
/ 12 февраля 2020

Я тоже удивлялся этому. Что происходит, если значения преобразуются в шестнадцатеричные данные (например, как 'превращается в 27), затем перед ними добавляется%, чтобы отличить guish символов от остальной части URL. Когда данные отображаются, в случае FireFox они возвращаются в исходную форму. Вот хороший веб-сайт, чтобы понять, о чем я говорю.

Я думаю, что причина, по которой браузеры делают это, заключается в предотвращении атак XSS, но я не уверен на 100%.

...