بخش های اصلی

آموزش HTTP

HTTP – پیام ها (Messages)

HTTP مبتنی بر مدل معماری کلاینت-سرور و پروتکل بدون وضعیتِ درخواست/پاسخِه و از طریق تبادلات پیام ها در یک ارتباط قابل اطمینانِ TCP/IP عمل می کنه.

HTTP "کلاینت"، برنامه ایِه (مرورگر وب یا هر کلاینت دیگه ای) که برای فرستادن یک یا چند پیام درخواستِ HTTP، ارتباطی با سرور می سازِه. HTTP "سرور"، برنامه ایِه (معمولاً وب سروری مثل وب سرورِ Apache یا سرویس اطلاعاتی اینترنت (IIS) و ...) که ارتباط را قبول می کنه تا به درخواست های HTTP از طریق فرستادن پیام های پاسخِ HTTP خدماتی را ارائه بده.

HTTP از شناساگر منبع متحدالشکل (URL) برای شناسایی منابع داده شده و ساختن یک ارتباط استفاده می کنه. زمانی که ارتباط برقرار می شه، HTTP messages (پیام های HTTP) با فرمتی شبیه به فرمتی که در Internet mail [RFC5322] و پسوندهای ایمیل چندمنظوره (MIME) [RFC2045] به کار رفته، پاس داده میشن. این پیام ها حاوی درخوست هایی (requests) از سمت کلاینت به سرور و پاسخ هایی (responses) از سمت سرور به کلاینت هستن که با فرمت زیر نشان داده میشن:

 HTTP-message   = <Request> | <Response> ; HTTP/1.1 messages

درخواست های HTTP و پاسخ های HTTP از یک فرمت عمومی پیام از نوع RFC 822 برای انتقال داده های مورد نیازشان استفاده می کنن. این فرمت عمومی پیام، از چهار آیتمِ زیر تشکیل شده.

A Start-line

Zero or more header fields followed by CRLF

An empty line (i.e., a line with nothing preceding the CRLF) 
indicating the end of the header fields

Optionally a message-body

در ادامه، هر یک از موجودیت های (entities) استفاده شه در پیام HTTP را توضیح میدیم.

Start-Line پیام

Start-line دارای شکل دستوریِ عمومی زیرِه:

start-line = Request-Line | Status-Line

در مورد Request-Line و Status-line ، به ترتیب هنگام توضیح مباحثِ پیام های درخواست HTTP و پیام های پاسخ HTTP صحبت خواهیم کرد. اکنون، بیاین مثال هایی از start line در موارد مربوط به درخواست و پاسخ را ببنیم:

GET /hello.htm HTTP/1.1     (This is Request-Line sent by the client)

HTTP/1.1 200 OK             (This is Status-Line sent by the server)

فیلدهای سرآیند (Header Fields)

فیلدهای سرآیندِ HTTP، اطلاعات مورد نیاز در مورد درخواست یا پاسخ یا در مورد شیءِ فرستاده شده در بدنه ی پیام را فراهم می کنن. چهار نوع سرآیندِ پیامِ HTTP وجود داره:

  • General-header: این فیلد سرآیند برای هر دو پیام درخواست و پاسخ، کاربردی عمومی داره.
  • Request-header: این فیلد سرآیند فقط برای پیام های درخواست کاربرد داره.
  • Response-header: این فیلد سرآیند فقط برای پیام های پاسخ کاربرد داره.
  • Entity-header: این فیلد های سرآیند، اطلاعاتِ متا، درمورد entity-body را تعریف می کنن و اگه body وجود نداشته باشه، در مورد منبع شناخته شده توسط درخواست، اطلاعات متا را تعریف می کنن.

سرآیندهایی که در بالا به آن ها اشاره شد، از فرمت عمومی مشابهی پیروی می کنن و هر فیلد سرآیند از یک نام که با علامت کولن (:) دنبال میشه، و مقدار فیلد تشکیل میشه. به شکل زیر:

message-header = field-name ":" [ field-value ]

در ادامه مثال هایی از چند فیلدِ سرآیند مختلف را مشاهده می کنین:

User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

Message Body (بدنه ی پیام)

این بخش برای پیامِ HTTP، اختیاریِه ولی اگه وجود داشته باشه، برای نگه داشتن entity-body (محتوای بدنه) که توسط درخواست یا پاسخ ایجاد میشه، استفاده خواهد شد. اگه محتوای بدنه وجود داشته باشه، معمولاَ سرآیندهایِ Content-Type (نوع محتوا) و Content-Length (طول محتوا)، ماهیت بدنه را تعیین می کنن.

بدنه ی پیام (message body)، داده ی درخواستی اصلیِ HTTP (شامل داده و آپلودشده ها و ..)  و داده ی اصلی پاسخِ HTTP را از سرور (شامل فایل ها، عکس ها و ...) نگه می داره. در ادامه محتوای ساده ای از یک بدنه ی پیام آورده شده:

<html>
   <body>
   
      <h1>Hello, World!</h1>
   
   </body>
</html>

دو بخش بعدی از مفاهیم توضیح داده شده در بالا برای آماده سازی درخواست ها و پاسخ های HTTP استفاده خواهند کرد.

مبحث آموزشی

آموزش HTTP

HTTP

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

تبلیغات

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

آخرین مقالات

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد