Інструменти розробника · URL енкодер & декодер
Простір в посиланнях для завантаження файлів: чому %20, + і сирий простір не такий же
· Чому це питання
Опубліковано ToolAcre · Редакція журналу
виворітна обробка головна розробник-workflow

Файл називається 'Q3 звіт (final).pdf' може бути пов'язаний з трьома різними способами, і тільки один надійно правильний. Ця пошта пояснює, чому файлиnames зламати посилання для завантаження і як їх зашифрувати, так що кожен клієнт погоджується.
Завантаження, що не може бути для деяких користувачів і працює для інших — файл з пробілами і знаком плюс
Файли, такі як "Q3 report.pdf" працювати відмінно, коли зберігати локально, але не можна за допомогою посилання для деяких користувачів, одночасно інші не мають проблем. Сирі пробіли несуть у URL-адресах за RFC 3986 специфікація. Браузери переносять їх в адресні стовпчики, але HTTP клієнти суворо відхиляють їх. Розуміння %20, плюс знаки, і сирі пробіли абсолютно незамінні для надійного розподілу. Визначте метод кодування безпосередньо впливає на швидкість завантаження в різних платформах, різні інструменти автоматизації та HTTP реалізація клієнтів по всьому світу. Розробники повинні зрозуміти цю відмінність при створенні систем завантаження. Контекстні питання для вибору кодування та сумісності системи.
Розробники повинні вибрати між сирими просторами, %20, або плюс знаки при створенні посилання для завантаження. Тестування з curl, wget та Python показує, які клієнти використовують RFC комплаєнс. Браузера завантажується в результаті відновлення помилок, але API не вдається при виникненні некодованих просторів.
Чому сирий простір недійсний URL — і чому пересуватися в адресному рядку, але HTTP нема клієнтів
Сирі пробіли у URL-адресах мають історичні корені в дизайні протоколу. URL-адреси траверсійних систем, що лікують пробіли, як дельімітатори між токени. Простір в космосі URL може бути неприйнятим як його термінатор. HTTP читання клієнтів з командних ліній, які виконають на перших просторах. Цей принциповий дизайн залишається в реалізації протоколу і навряд чи змінюється.
Браузери переносять сирі пробіли через німий перетворення на %20 перед відправленням HTTP запит. Ця зручна поведінка ховає вимоги протоколу від кінцевих користувачів, які задають URL-адреси в адресні стовпчики. Автоматизовані системи не вистачає цього шару відновлення. Скрипті не ввімкнуть URL-адреси з сирими просторами. Відкриваємо такі посилання, що користувачі електронної пошти з’являються.
%20 верш + в сегменті шляху — конвенції, що не застосовується до шляхів
%20 versus plus - це фундаментальна відмінність в URL кодування контекстів. У сегментах шляху, пробіли повинні зашифрувати як %20 за RFC 3986. Знак плюса не є кодуванням простору в шляхах. Цей конвенції, що випускається в HTML у вигляді кодування простору в рядках запиту. Розробники часто некоректно застосовуються правила форми до шляхів.
Форми-кондиціонарні, що дозволяють плюс приписи не застосовувати до шляхів з різними структурними вимогами. У рядках запиту, ампери і рівні відхилити параметри. Використання плюс для просторів в значеннях запиту не створює нікуди, оскільки плюс не є глухим. У доріжках, плюс не має особливого значення. Змішування конвенцій створює зламані посилання для завантаження.
Не-ASCII ім'я файла — UTF-8 що означає, що ви можете використовувати ключі для зберігання даних, що зберігає назву
Не-ASCII ім'я файла UTF-8 проценти перед безпечною трансмісією в URL. Прізвище, ім'я файлу: "Увімкнути" report.pdf"УМ" (У+00DC) поза ASCII діапазон. UTF-8 кодування перетворює це в байти C3 9C. Ці байти відсотків-encode як %C3%9C у URL. Збір UTF-8 байт отримує власний потрійний, що виробляє більш тривалий кодований файл.
Послуги зберігання об'єктів, таких як Amazon S3, присутні цікаві випадки для не-ASCII ім'я файла. Деякі системи дозволяють сировину UTF-8 байти у ключах, а інші вимагають відсотків-пригоди. Стратегія кодування залежить від постачальників і постачальників зберігання URL використання. URL- доступ на основі вимагає від відсотків UTF-8. Розробники повинні координувати зберігання та URL шари генерування.
Приклад роботи: кодування "Über Q3 звіт (final)+notes.pdf- за шлях - точний вихід і чому + повинна стати %2B
Приклад роботи: кодування "Увімкнути звіт (фінал)+notes.pdf" демонструє повне кодування. Ім'я файла містить пробіли, не-ASCII символи, а також літровий плюс. UTF-8 кодування "Ü" виробляє %C3%9C. При кодуванні шляху, пробіли стають %20 (не схожа кодування форми за допомогою плюс). Лінійний плюс стає %2B. Код Парентезів закодом в %28 й %29. Результат: %C3%9CberQ3%20report%20%28фінал%29%2Bnotes.pdf.
Тестування з URL енкодер і декодер показує точний перетвор. Встановити ім'я файлу в однозначному режимі виробляють правильні відсоткові сегменти за допомогою правил доріжки. Інструмент зберігає шлях глухих пальників при кодуванні тільки компонентів файлів. Увімкнення та виведення даних робить правила чіткими та вимитими перед виробництвом. Порівняти це з режимом форми, щоб побачити відмінності контексту.
Content-Disпозиція та параметр Filename* — окремий кодування для піктограми завантаження, зазначений для повноти
Параметри Content-Distion та Filename* представляють альтернативні формати кодування для швидкого завантаження. Сервери включають в себе вказівники Content-Discover, які вказують на ім'я файлів для діалогів завантаження. Параметри файлу RFC 2183 кодування при файлі * використовує RFC 5987 з %-захищеним Браузери інтерпретують ці заголовки, щоб визначити імена файлів. Те ж назва файлу кодує двічі з різними схемами.
Два шари кодування створюють можливості для перекодування помилок. URL-кодовані і закодовані імена, можуть не запускатися в режимі круглого стропи, якщо сервери і клієнти незгодні. Для максимальної сумісності розробники повинні зашифрувати імена файлів в URL шляхи за допомогою %20 і UTF-8 відсоткова обробка та налаштування наголовок Content-Distion з декодованими назвами файлів. Це забезпечує всі HTTP зручності та навички роботи.
Що це не кришка — замкнені імена файлів на конкретні операційні системи та контейнерні акрів
Зашифровані імена файлів на конкретних операційних системах додати складність URL кодування. Windows резервні копії імен, такі як CON, PRNй AUX для пристроїв. Файли буквально названі "CON.pdf"не існує на NTFS. macOS має на увазі конвенції та розширені правила атрибутів. Linux – це випадковий. Дійсно URL-кодовані імена файлів не можуть бути дійсними для зберігання на певних системах.
Складність зберігання кормових кіл додають складність перерізу. Amazon S3 приймає UTF-8 ключі та є чутливим до справи. Google Cloud Storage поводиться аналогічно з додатковими обмеженнями. Azure Blob Storage має різні правила характеру. Файли, що працюють на S3, можуть не входити на Azure. Архітектори повинні перевірити документацію про постачальника і перевірити їх реальним не-ASCII ім'я файла.
Похід: закодувати сегмент, не URL — як правильно URL однозначний режим енкодера та декодера виробляє патч-безпечне ім'я файлу
Похід: закодувати сегмент, не URL-тип URL енкодер і декодер однозначного режиму виробляє патч-безпечні імена файлів. Інструмент приймає сирі імена файлів і виробляє відрізки, що використовуються в %-encoded. Це запобігає подвійному змішування та змішування контекстів. Використання однозначного режиму дозволяє балансувати шлях, запит та правила кодування фрагментів. Увімкнути в URL-адреси, які використовуються для вставки.
Кращі практики кодує імена файлів, де вони вводять URL будівництво. Не припустимо, що веб-переглядачі виправають питання кодування. Тест з фактичним HTTP клієнти, які використовуються за допомогою цільових користувачів: curl, wget, Python, Java httplib, і браузера fetch API. Перевірити імена файлів, вижити за допомогою всіх систем. URL енкодер і декодер - початкова точка, що забезпечує правильність.