اغلب اوقات گفتن جملاتی مانند "من یک دامنه خریدم" یا "تصاویر ما در سایت دیگری میزبانی می شوند" خوب است، حتی اگر کاملاً درست نباشد. با این حال، در برخی زمینه ها لازم است دقیق تر باشیم. به عنوان مثال، هنگام برخورد با کوکی ها، باید تفاوت بین سایت و مبدا را درک کنید.
نام بخشهای URL در یک استاندارد مشخص شده است که یک API جاوا اسکریپت را نیز تعریف میکند:
- استاندارد URL URL ها و مفاهیم مرتبط را تعریف می کند تا مهندسان را قادر می سازد مرورگرهای وب را با هم کار کنند.
- مؤلفه URL API استاندارد، روش هایی را برای دسترسی به بخش هایی از رشته URL، مانند طرح یا مبدا تعریف می کند.
این سند طیف وسیعی از اصطلاحات مورد استفاده با رشته های URL HTTP یا HTTPS را توضیح می دهد. سایر انواع URL مانند آدرس فایل یا داده را پوشش نمی دهد. برای عباراتی مانند host
و origin
، تعاریف دقیق ذاتاً پیچیده هستند، بنابراین این سند به جای تلاش برای توضیح کامل، مثالها و پیوندهایی به استاندارد URL ارائه میکند.
می توانید از جاوا اسکریپت برای دریافت نام اجزای URL که توسط URL API تعریف شده اند استفاده کنید. به عنوان مثال:
let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);
تجزیه و تحلیل URL
URL زیر را ویرایش کنید تا ببینید قسمت هایی از رشته URL چگونه نامگذاری شده اند. همچنین میتوانید این را در یک برگه جداگانه در url-parts.glitch.me باز کنید.
نام بخش های URL به ترتیب حروف الفبا در زیر فهرست شده است.
دامنه سطح بالای کد کشور (ccTLD)
یک دامنه سطح بالا که در فهرست کدهای کشور ISO 3166-1 تعریف شده است.
نام دامنه
بخشهایی از URL HTTP یا HTTPS که با نقطه از هم جدا شدهاند: همه چیز بعد از طرح ، اما قبل از مسیر یا پورت (در صورت مشخص شدن). هر قسمت از نام دامنه به عنوان یک برچسب شناخته می شود.
URL | نام دامنه |
---|---|
https://example.github.io/path | example.github.io |
https://support.example.org.au:443 | support.example.org.au |
دامنه موثر سطح بالا (eTLD)
یک ورودی در فهرست پسوند عمومی ، شامل دامنههای TLD و (برای eTLD با بخشهای متعدد) زیر آن: سطح دوم، سطح سوم و غیره.
- به عنوان مثال:
com
،com.au
،github.io
،sa.edu.au
،schools.nsw.edu.au
.
«پسوند عمومی» مانند این نمونهها، نامی است که میتوان دامنهها را تحت آن ثبت کرد. فهرست پسوند عمومی فهرستی از تمام پسوندهای عمومی شناخته شده است و اغلب به روز می شود. مرورگرهایی از جمله Chromium و Firefox از این لیست در ساختهای خود استفاده میکنند.
eTLD+1
دامنه قابل ثبت را ببینید.
یک eTLD به اضافه زیر دامنه ای که قبل از آن قرار دارد.
- به عنوان مثال:
example.com
،example.org.au
،example.github.io
،example.sa.edu.au
،example.schools.nsw.edu.au
.
نام فایل
در استاندارد URL تعریف نشده است و بخشی از URL API نیست، اما معمولاً برای ارجاع به قسمت نهایی و غیرمسیر URL بر اساس این فرض - اغلب نادرست - استفاده می شود که URL مستقیماً به ساختار دایرکتوری نگاشت می شود.
برای مثال، با https://example.com/dir/file.html
، file.html
ممکن است به عنوان نام فایل نامیده شود.
مقدار نام فایل نیز توسط مرورگرها برای نامگذاری یک دارایی در صورت دانلود استفاده می شود. برای مثال، https://example.com/images/image.jpg
معمولاً به صورت محلی در image.jpg
ذخیره می شود.
قطعه
رشته ای که از یک کاراکتر # در انتهای URL پیروی می کند و یک شناسه قطعه ارائه می دهد.
- به عنوان مثال: URL
https://example.com/cats#tabby
دارای مقدار شناسه قطعهtabby
است.
بخشی شامل #
به عنوان هش یا لنگر شناخته می شود. همچنین می توانید به یک قطعه متن پیوند داده و برجسته کنید.
هش توسط URL API به جای قطعه برگردانده می شود.
نام دامنه کاملاً واجد شرایط (FQDN)
یک آدرس کامل برای یک وب سایت یا یک سرور، که به یک آدرس IP نگاشت می شود.
URL | FQDN |
---|---|
https://example.com:1234/cats | example.com |
https://api.example.github.io | api.example.github.io |
FQDN برای URL شامل پورت نمی شود، حتی اگر از یک پورت غیر پیش فرض استفاده شود.
هش (یا لنگر)
رشتهای که از یک کاراکتر # در انتهای URL پیروی میکند و یک شناسه قطعه ارائه میکند. (در برخی زمینهها به آن «لنگر» میگویند.)
بخشی به استثنای #
به عنوان قطعه شناخته می شود. همچنین می توانید به یک قطعه متن پیوند داده و برجسته کنید.
هش توسط URL API به جای قطعه برگردانده می شود.
میزبان
همانطور که در استاندارد URL تعریف شده است، یک میزبان می تواند یک نام دامنه ، آدرس IP v4، آدرس IPv6، میزبان غیر شفاف یا میزبان خالی باشد.
- تعریف استاندارد URL از
host
شامل پورت نمی شود. -
URL.host
شامل پورت می شود، مگر اینکه پورت پیش فرض طرح باشد. -
URL.hostname
شامل پورت نمی شود.
URL | URL.host |
---|---|
https://www.example.com:443/cat | www.example.com // 443 is the default port for the scheme |
https://www.example.com:1234/cat | www.example.com:1234 |
https://cat.example.github.io | cat.example.github.io |
نام میزبان
نام میزبان توسط API URL
جاوا اسکریپت تعریف می شود، اما در جای دیگر توسط استاندارد URL تعریف نمی شود. برای جزئیات بیشتر به نمایندگی میزبان مراجعه کنید.
URL.hostname
میزبان را بدون پورت برمی گرداند.
URL | URL.hostname |
---|---|
https://www.example.com:443/cat | www.example.com |
https://www.example.com:1234/cat | www.example.com |
https://cat.example.github.io | cat.example.github.io |
مبدا
استاندارد URL origin
تعریف می کند و برای پس زمینه به استاندارد HTML پیوند می دهد.
برای نشانیهای وب HTTP یا HTTPS، URL.origin
طرح ، میزبان و پورت را برمیگرداند (مگر اینکه پورت پیشفرض طرح باشد).
URL | URL.origin |
---|---|
https://www.example.com:443/cat | https://www.example.com |
https://www.example.com:1234/cat | https://www.example.com:1234 |
https://cat.example.github.io | https://cat.example.github.io |
پارامتر
به پارامترهای جستجو مراجعه کنید
رمز عبور
مشاهده نام کاربری
نام مسیر
برای URL HTTP یا HTTPS، قسمت بعد از دامنه و پورت (در صورت تعریف)، شامل نام فایل (در صورت تعریف) اما شامل رشته جستجو یا هش نیست.
URL | URL.pathname |
---|---|
https://example.com | [empty string] |
https://example.com:8000/search?q=tabby | /search |
https://example.github.io/cat/pattern#tabby | /cat/pattern |
https://example.github.io/README.md | /README.md |
"مسیر" گاهی اوقات برای اشاره به نام مسیر بدون نام فایل استفاده می شود. به عنوان مثال، برای URL https://example.com/cat/pattern/tabby.html
، "مسیر" /cat/pattern
است.
بندر
عدد بعد از یک :
در URL که یک پورت شبکه را مشخص می کند. به عنوان مثال: برای URL https://example.com:1234/tabby
شماره پورت 1234 است.
شماره پورت باید یک عدد صحیح بدون علامت 16 بیتی باشد: به عبارت دیگر، یک عدد صحیح بین 0 و 65535 شامل.
برای URL HTTP، پورت پیش فرض 80 است. برای HTTPS، پیشفرض 443 است. URL نیازی به تعیین شماره پورت ندارد، مگر اینکه از یک پورت غیر پیشفرض استفاده شود.
اگر پورت پیش فرض طرح باشد، API یک رشته خالی برمی گرداند.
URL | URL.port |
---|---|
https://example.com | // empty string |
https://example.com:443/foo | // empty string: port is default for scheme |
https://www.example.com:1234/foo | 1234 |
پروتکل
طرحی که با :
(به عنوان مثال http:
یا https:
:) دنبال می شود.
protocol
از URL API در دسترس است، اما scheme
اینطور نیست.
پرس و جو (یا "رشته پرس و جو")
بخش جستجوی URL، به استثنای پیشرو ?
.
دامنه قابل ثبت
- برای یک URL با یک eTLD تک بخشی مانند
com
یاorg
(یعنی eTLD که با TLD مطابقت دارد)، دامنه و دامنه سطح دوم قبل از آن: برای مثالexample.com
یاexample.org
. - برای یک URL با یک eTLD دو قسمتی که در آن فقط ثبت سطح سوم مجاز است (یعنی ورودیهایی در فهرست پسوند عمومی مانند
com.au
وgithub.io
) دامنه سطح بالا دو بخشی ("پسوند عمومی") و نام دامنه سطح سوم درست قبل از آن. به عنوان مثال:example.org.au
یاexample.github.io
. - برای eTLD هایی با سه قسمت یا بیشتر، eTLD و دامنه قبل از آن.
طرح
بخشی از URL (قبل از ://
) که پروتکل شبکه را تعریف می کند (یا اقدامی که باید توسط عامل کاربر انجام شود) هنگامی که درخواستی برای یک URL ارسال می شود. برای مثال، درخواست یک URL با طرح https
باید با استفاده از پروتکل HTTPS انجام شود. برای درخواست یک URL با طرحی مانند file
، mailto
یا git
که با پروتکل شبکه مطابقت ندارد، رفتار به عامل کاربر بستگی دارد. برای مثال، زمانی که کاربر روی پیوند mailto
کلیک میکند، اکثر مرورگرها برنامه ایمیل پیشفرض خود را با استفاده از مقادیر موجود در آدرس href
URL پیوند باز میکنند.
جستجو کنید
یک علامت سوال و به دنبال آن یک سری جفت کلید-مقدار که پارامترها و مقادیر آنها را نشان میدهند و بعد از نام مسیر ارائه میشوند.
URL | URL.search |
---|---|
https://example.com/cats?pattern=tabby&mood=bonkers | ?pattern=tabby&mood=bonkers |
https://example.com/cats:443?pattern=tabby | ?pattern=tabby |
query
یا "رشته پرس و جو" به search
بدون پیشرو اشاره دارد ?
.
به پارامترهای جستجو نیز مراجعه کنید.
پارامترهای جستجو
به یک مورد از داده های ارسال شده در یک رشته جستجو (یا "رشته پرس و جو") مراجعه کنید.
- به عنوان مثال: برای
https://example.com/cats?pattern=tabby&mood=bonkers
، رشته جستجو دارای دو پارامتر است:pattern=tabby
وmood=bonkers
.
دامنه سطح دوم
دامنه قبل از دامنه سطح بالا .
برای URL
https://www.example.com
، دامنه سطح دومexample.com
است، یک زیر دامنه از دامنه سطح بالاcom
.برای
https://example.org.au
، دامنه سطح بالاau
، دامنه سطح دومorg
و دامنه سطح سومexample
است. در این مثال،org.au
یک زیر دامنه ازau
وexample.org.au
یک زیر دامنه ازorg.au
است.
سایت
سایت توسط استاندارد HTML، به همراه همان سایت ، که شامل طرح ، و همان سایت بدون طرح است، تعریف می شود.
سایت در استاندارد URL یا API URL جاوا اسکریپت تعریف نشده است.
در این زمینه:
- برای یک URL HTTP یا HTTPS با یک eTLD تک بخشی مانند
https://example.com
، سایت ازscheme
، eTLD و برچسب قبل از آن تشکیل شده است. به عنوان مثال: برای URLhttps://www.example.com/cat
، سایتhttps://example.com
است. (برای این URL، eTLD همان دامنه سطح بالا است.) - برای eTLD های چند بخشی مانند
co.uk
،github.io
یاsa.edu.au
، "سایت" ازscheme
، eTLD و برچسب قبل از آن تشکیل شده است. برای مثال: برای URLhttps://cat.example.co.uk/tabby
، سایتhttps://example.co.uk
و برایhttps://www.education.sa.gov.au
سایت است.https://education.sa.gov.au
است.
URL | سایت (با طرح و eTLD +1) |
---|---|
https://cat.example.com/tabby | ("https"، "example.com") |
https://cat.example.co.uk/tabby | ("https"، "example.co.uk") |
برخلاف مبدا ، سایت شامل پورت نمی شود.
زیر دامنه
یک دامنه در یک دامنه سطح بالاتر.
برای سایت هایی با دامنه های سطح بالای تک قسمتی مانند com
یا org
، قسمت های قبل از دامنه سطح بالا که هر کدام با یک نقطه از هم جدا می شوند.
-
www.example.com
یک زیر دامنه ازexample.com
است. -
support.api.example.org
یک زیر دامنه ازapi.example.org
است که یک زیر دامنه ازexample.org
است.
برای eTLDهای دو بخشی که فقط ثبتهای سطح سوم مجاز هستند (یعنی ورودیهایی در فهرست پسوند عمومی مانند co.uk
و github.io
)، زیر دامنهها قسمتهایی از نام دامنه قبل از آن هستند.
- به عنوان مثال:
cat.example.co.uk
یک زیر دامنه ازexample.co.uk
است.
قطعه متن
نوعی قطعه که پیوند دادن و برجسته کردن محدوده ای از متن را در یک صفحه ممکن می کند. هنگامی که یک کاربر پیوندی را با یک قطعه متن دنبال می کند، مرورگر سعی می کند متن را در صفحه پیدا کند، به آن اسکرول کرده و برجسته کند.
یک قطعه متن با :~:text=
و سپس عبارت جستجو شروع می شود.
به عنوان مثال، برای پیوند دادن به اولین تکرار متن "fragment" در این صفحه، از URL https://web.dev/articles/url-parts#:~:text=fragment
استفاده کنید.
بیشتر بیاموزید: قطعات متن .
دامنه سطح بالا (TLD)
یک نام دامنه فهرست شده در پایگاه داده Root Zone مانند com
یا org
. برخی از دامنههای سطح بالا، دامنههای سطح بالای کد کشور هستند، مانند uk
و tv
.
هنگام توصیف بخشهای یک URL HTTP یا HTTPS، TLD نام دامنهای است که از نقطه پایانی پیروی میکند.
- برای
https://example.org
، دامنه سطح بالای URLorg
است. - برای
https://example.org.au
، دامنه سطح بالای URLau
است وorg
یک دامنه سطح دوم است (حتی اگرorg
نیز یک دامنه سطح بالا باشد).org.au
یک eTLD دو بخشی است.
فهرست پسوند عمومی eTLD ها شامل دامنه هایی با یک، دو یا چند قسمت است، بنابراین یک TLD می تواند یک eTLD نیز باشد. به عنوان مثال:
- برای
https://example.com
، URL eTLDcom
است که یک TLD نیز هست.
نام کاربری
نام کاربری و رمز عبور اختیاری را می توان در ابتدای URL ارائه کرد، اما به دلایل امنیتی منسوخ شده است و در بسیاری از موارد نادیده گرفته می شود.
به عنوان مثال، با https://user123:password1@example.com
نام کاربری user123
است. توجه داشته باشید که نام کاربری (و رمز عبور!) به صورت متن ساده است و رمزگذاری نشده است. اگر نام کاربری حاوی نمادهای :
یا @
باشد، باید URL به ترتیب به %3A
و %40
کدگذاری شود.
بیشتر بدانید
- WHATWG: استاندارد زندگی URL
- WHATWG: استاندارد زندگی HTML
- URL API
- درک "همان سایت" و "همان منبع"
- RFC: مکان یاب منبع یکنواخت (URL)
- RFC: URI ها، URL ها و URN ها
- پایگاه داده Root Zone (دایرکتوری TLD ها )
- فهرست پسوند عمومی (دایرکتوری eTLD ها : "پسوند عمومی مجموعه ای از نام های DNS یا حروف عام است که با نقطه ها به هم پیوسته اند. بخشی از نام دامنه را نشان می دهد که تحت کنترل فرد ثبت کننده نیست.")
- واژه نامه ICANN
- نام دامنه کاملاً واجد شرایط چیست؟
- به چند روش می توانید یک URL را برش دهید و قطعات را نامگذاری کنید؟
- واژه نامه MDN Web Docs
- URL چیست؟
- تاریخچه URL