یک URL از چه بخش هایی تشکیل شده است؟

اغلب اوقات گفتن جملاتی مانند "من یک دامنه خریدم" یا "تصاویر ما در سایت دیگری میزبانی می شوند" خوب است، حتی اگر کاملاً درست نباشد. با این حال، در برخی زمینه ها لازم است دقیق تر باشیم. به عنوان مثال، هنگام برخورد با کوکی ها، باید تفاوت بین سایت و مبدا را درک کنید.

نام بخش‌های 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 تعریف شده است.

  • برای https://example.org.au ، ccTLD au است.
  • برای https://example.io ، ccTLD io است.

نام دامنه

بخش‌هایی از 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 و برچسب قبل از آن تشکیل شده است. به عنوان مثال: برای URL https://www.example.com/cat ، سایت https://example.com است. (برای این URL، eTLD همان دامنه سطح بالا است.)
  • برای eTLD های چند بخشی مانند co.uk ، github.io یا sa.edu.au ، "سایت" از scheme ، eTLD و برچسب قبل از آن تشکیل شده است. برای مثال: برای URL https://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 ، دامنه سطح بالای URL org است.
  • برای https://example.org.au ، دامنه سطح بالای URL au است و org یک دامنه سطح دوم است (حتی اگر org نیز یک دامنه سطح بالا باشد). org.au یک eTLD دو بخشی است.

فهرست پسوند عمومی eTLD ها شامل دامنه هایی با یک، دو یا چند قسمت است، بنابراین یک TLD می تواند یک eTLD نیز باشد. به عنوان مثال:

  • برای https://example.com ، URL eTLD com است که یک TLD نیز هست.

نام کاربری

نام کاربری و رمز عبور اختیاری را می توان در ابتدای URL ارائه کرد، اما به دلایل امنیتی منسوخ شده است و در بسیاری از موارد نادیده گرفته می شود.

به عنوان مثال، با https://user123:password1@example.com نام کاربری user123 است. توجه داشته باشید که نام کاربری (و رمز عبور!) به صورت متن ساده است و رمزگذاری نشده است. اگر نام کاربری حاوی نمادهای : یا @ باشد، باید URL به ترتیب به %3A و %40 کدگذاری شود.


بیشتر بدانید