گزینههای پیشرفته
تبدیل + به فاصله
وقتی فعال است، کاراکترهای + به فاصله تبدیل میشوند. این هنگام رمزگشایی پارامترهای query مفید است.
حالت زنده
وقتی فعال است، متن به طور خودکار در حین تایپ رمزگشایی میشود.
این گزینهها به شما کمک میکنند نحوه رمزگشایی کاراکترهای رمزگذاریشده در URLهای خود را کنترل کنید.
رمزگشایی URL چیست؟
رمزگشایی URL، رمزگذاری درصدی را معکوس میکند: توالیهای فرار %XX موجود در URL رمزگذاریشده را میخواند و آنها را به کاراکترهایی که نمایانگر آنها هستند برمیگرداند. این روشی است که شما یک query string، مقدار فرم یا path segment قابل خواندن را از URL رمزگذاریشدهای که مرورگر، API یا log line به شما داده است بازیابی میکنید.
رمزگشایی URL چگونه کار میکند؟
رمزگشایی URL از یک فرآیند خاص برای تبدیل دنبالههای کدگذاریشده با درصد به کاراکترهای اصلی آنها پیروی میکند:
- رشته ورودی برای یافتن دنبالههای گریز کدگذاریشده با درصد (%XX) پویش میشود
- هر %XX از دو رقم هگزادسیمال خود به مقدار بایت اصلی بازگردانده میشود
- بایتهای رمزگشاییشده پشتسرهم به کاراکترهای UTF-8 بازساخته میشوند (یک دنباله چندبایتی به یک کاراکتر تبدیل میشود)
- در زمینه رشته query، + به یک فاصله رمزگشایی میشود (application/x-www-form-urlencoded)، در حالی که %2B یک + تحتاللفظی باقی میماند
- کاراکترهای رزرونشده و متن از پیش رمزگشاییشده بدون تغییر عبور میکنند
چرا از رمزگشای URL استفاده کنیم؟
- خروجی خوانا: %20، %40 و %3D را به فاصله، @ و = برمیگرداند تا بتوانید بخوانید URL واقعاً چه میگوید
- متن بینالمللی: کاراکترهای دارای تلفظ و غیر ASCII را از توالیهای بایت UTF-8 آنها بازسازی میکند تا %C3%A9 دوباره به صورت é خوانده شود
- اشکالزدایی: قبل از اقدام، مقادیر واقعی درون یک query string، redirect OAuth یا payload وبهوک را بررسی کنید
- مطابق استاندارد: مطابق RFC 3986 رمزگشایی میکند، همان قوانینی که مرورگرها و سرورها استفاده میکنند، تا دقیقاً همان چیزی را ببینید که آنها میبینند
کاربردهای رایج رمزگشایی URL چیست؟
رمزگشایی URL در بسیاری از موقعیتهای توسعه وب ضروری است:
- ارسال فرم: بازخوانی مقادیر اصلی فیلدها از دادههای GET و POST با فرمت application/x-www-form-urlencoded
- توسعه API: استخراج پارامترهای path و query رمزگذاریشدهای که به یک endpoint API میرسند
- سیستم فایل: بازیابی مسیرها و نام فایلهایی که برای انتقال در URL رمزگذاری درصدی شده بودند
- اشکالزدایی لینک: رمزگشایی URLهای به اشتراک گذاشته شده یا ثبتشده در لاگ برای دیدن کاراکترهای خاص و متن بینالمللی موجود در آنها
مثال رمزگشایی URL چگونه است؟
در اینجا چند مثال رایج از رمزگشایی URL آمده است: %20 (یا +) به فاصله تبدیل میشود، %40 به @ تبدیل میشود، %23 به # تبدیل میشود، %26 به & تبدیل میشود و %3D به = تبدیل میشود. یک توالی UTF-8 مانند %C3%A9 به کاراکتر بینالمللی é تبدیل میشود.
رمزگذاری درصدی چیست؟
رمزگذاری درصدی مکانیزمی است که توسط RFC 3986 §2.1 برای نمایش کاراکترهایی که در یک URI ناامن یا رزرو شده هستند تعریف شده. قانون مکانیکی است: هر بایتی که نمیتواند به طور تحتاللفظی ظاهر شود به صورت یک نشان درصد و به دنبال آن دو رقم هگزادسیمال — فرم %XX — نوشته میشود. توسعهدهندگان تقریباً هر روز با این مواجه میشوند: در query string ها، ارسالهای فرم، URLهای callback OAuth، پارامترهای مسیر REST API و هر جایی که یک URL باید فاصله، علائم نگارشی یا کاراکترهایی خارج از مجموعه غیررزرو A–Z a–z 0–9 - _ . ~ را حمل کند.
رمزگشایی %C3%A9 به é چگونه کار میکند؟
query string رمزگذاریشده ?q=caf%C3%A9&lang=fr را در نظر بگیرید. رمزگشایی نتیجه ?q=café&lang=fr را تولید میکند. در اینجا گامبهگام توضیح میدهیم:
- ورودی:
?q=caf%C3%A9&lang=fr - خروجی:
?q=café&lang=fr
%C3→ بایت0xC3(باینری11000011) — بایت پیشرو از یک توالی UTF-8 دو بایتی.%A9→ بایت0xA9(باینری10101001) — بایت ادامه. ترکیبشده،C3 A9رمزگذاری UTF-8 از U+00E9 است کهéمیشود.- کاراکترهای
?،=و&دستنخورده باقی میمانند زیرا ساختاری هستند — آنها query و جفتهای کلید/مقدار آن را جدا میکنند.cafتحتاللفظی نیز عبور میکند چون حروف کوچک ASCII به مجموعه غیررزرو تعلق دارند.
تفاوت بین decodeURIComponent و decodeURI چیست؟
JavaScript دو رمزگشای داخلی ارائه میدهد و اشتباه گرفتن آنها یکی از رایجترین باگهای پردازش URL است:
decodeURIComponent(str)هر توالی درصد-رمزگذاریشده را از جمله کاراکترهای رزرو شده مانند&،=،?،/و#رمزگشایی میکند. از آن روی مقادیر query string جداگانه یا بخشهای مسیر استفاده کنید — هرگز روی یک URL کامل.decodeURI(str)عمداً محافظهکارانه است: کاراکترهای رزرو شده را رد میکند. دادن%26به آن رشته تحتاللفظی%26را برمیگرداند، نه&. برای URI های کامل در نظر گرفته شده که میخواهید ساختار در رفت و برگشت سالم بماند.
قانون سرانگشتی: اگر رشته یک تکه از URL است (یک پارامتر منفرد، یک fragment، یک نام فایل رمزگذاریشده)، از decodeURIComponent استفاده کنید. این ابزار مانند decodeURIComponent عمل میکند.
رمزگشایی URL روشی است که با آن میخوانید URL واقعاً چه چیزی در بر دارد. یک رشته رمزگذاریشده را در بالا paste کنید و هر توالی %XX همان لحظه در مرورگر شما به کاراکتر خود تبدیل میشود تا بتوانید یک query parameter را اشکالزدایی کنید، یک redirect OAuth را بررسی کنید یا یک نام فایل دارای تلفظ را بدون ارسال هیچ چیزی به سرور بازیابی کنید.