بخش های اصلی

آموزش HTTP

HTTP – درخواست ها (Requests)

HTTP کلاینت، یک درخواستِ HTTP در قالب پیامِ درخواست با فرمت زیر، به سرور می فرسته:

A Request-line

Zero or more header (General|Request|Entity) 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 را توضیح میدیم.

Request-Line

Request-Line همراه با یک نشانه ی (token) متد میاد و Reauest-URI و نسخه ی پروتکل  بدنبال آن میان و با CRLF پایان میابد. عناصر با فاصله و کاراکترهای SP از هم جدا میشن.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

متد درخواست (Request)

متد درخواست، متدی را مشخص می کنه که روی منبع شناخته شده توسط Request-URI داده شده، اجرا میشه. این متد حساس به حروفِه و همیشه باید با حروف بزرگ نوشته بشه. در جدول زیر تمام متدهایی که توسط HTTP/1.1. پشتیبانی میشن، لیست شده اند.

شماره متد و توضیحات
1

GET

متدِ GET برای بازیابی اطلاعات از سرور داده شده توسط URI، استفاده میشه. درخواست هایی که از GET استفاده می کنن فقط باید داده را بازیابی کنن و نباید هیچ تأثیر دیگه ای روی داده بذارن.

2

HEAD

مشابه HEAD با این تفاوت که فقط بخش status line و سرآیند را انتقال میده.

3

POST

درخواستِ POST برای ارسال داده به سرور با استفاده از فرم های HTML، استفاده میشه، مثل اطلاعات مشتری، آپلود فایل و ... .

4

PUT

تمام محتوای نمایش داده شده از منبع مقصد را با محتوای آپلود شده جایگزین می کنه.

5

DELETE

تمام محتوای نمایش داده شده از منبع مقصد که توسط URI داده شده را حذف می کنه.

6

CONNECT

یک تانِل (tunnel) با سروری که توسطِ URI داده شده، شناخته شده، برقرار می کنه.

7

OPTIONS

آپشن های ارتباطی را برای منبع مقصد شرح میده.

8

TRACE

یک پیام حلقه ی تست برگشتی، در مسیرِ (path) منبع مقصد، اجرا می کنه.

Request-URI

Request-URI، یک شناساگر منبع متحدالشکلِه و منبع را براساس منبعی که درخواست قراره بهش اعمال بشه، شناسایی می کنه. در ادامه پرکاربردترین شکل های تعریف یک URI آمده:

Request-URI = "*" | absoluteURI | abs_path | authority
شماره متد و توضیحات
1 علامت ستاره * زمانی استفاده میشه که درخواستِ HTTP به یک منبع خاص اعمال نشه ولی به خود سرور اعمال میشه و فقط زمانی استفاده میشه که متد استفاده شده لزوماً فقط به یک منبع اعمال نشه. برای مثال:OPTIONS * HTTP/1.1
2 absoluteURI زمانی که درخواستِ HTTP برای پراکسی (proxy) ساخته شده باشه، استفاده میشه. پراکسی برای فرستادن درخواست یا سرویس از یک حافظه ی نهانِ معتبر و بازگرداندن پاسخ، درخواست میشه. برای مثال:GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
3 پرکاربردترین شکلِ Request-URI، برای شناسایی منبع روی سرور مبدأ یا gateway به کار میره. برای مثال، کلاینتی میخواد منبعی را مستقیماً از سرور مبدأ بازیابی کنه. این کلاینت می تواند یک ارتباطِ TCP با پورت 80 از هاست "www.w3.org"  ایجاد کنه و خط زیر را بفرسته:GET /pub/WWW/TheProject.html HTTP/1.1Host: www.w3.orgبه یاد داشته باشین که مسیر مطلق نباید خالی باشه؛ اگه مسیر مطلق در URI مبدأ، خالی باشه، باید توسطِ "/" داده بشه (ریشه ی سرور).

فیلدهای سرآیندِ درخواست

General-header و Entity-header را در بخش هایی جداگانه، حینِ آموزش فیلدهای سرآیندِ HTTP، توضیح خواهیم داد.  اکنون، توضیح میدیم که فیلدهای سرآیندِ درخواست چییَن.

فیلدهای سرآیندِ درخواست (request-header) به کلاینت این امکان را میدن تا اطلاعات اضافی راجع به درخواست و راجع به خودِ کلاینت، به سرور پاس بده. این فیلدها بعنوان تغییر دهنده های درخواست عمل می کنن. در ادامه لیستی از مهم ترین فیلدهای سرآیندِ درخواست (request-header) لیست شده که بر اساس نیاز مورد استفاده قرار میگیرن.

  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Authorization
  • Expect
  • From
  • Host
  • If-Match
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Max-Forwards
  • Proxy-Authorization
  • Range
  • Referer
  • TE
  • User-Agent

در مواقعی که کلاینت و وب سرورِ سفارشی خودتان را می نویسین، می توانید فیلدهای سفارشی خودتان را تعریف کنین.

مثال هایی از پیام درخواست

اکنون بیاین همه چیز را کنار هم بذاریم تا یک درخواستِ HTTP برای واکشیِ (fetch) صفحه ی hello.html از وب سروری که softskill.ir را اجرا می کنه ایجاد کنیم.

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.softskill.ir
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

در این مثال، هیچ داده ی درخواستی به سرور نمی فرستیم چون میخوایم یک صفحه ی ساده ی HTML را از سرور واکشی کنیم. Connection یک سرآیندِ عمومی (general-header) است و باقیِ سرآیندها سرآیندِ درخواست (request header) هستن. مثال زیر نحوه ی ارسال فرمِ داده به سرور را با استفاده از بدنه ی پیامِ درخواست (request message body) نشان میده:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.softskill.ir
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID=string&content=string&/paramsXML=string

اکنون URL داده شده، /cgi-bin/process.cgi، برای پردازش داده ی پاس داده شده استفاده خواهد شد و بر اساس آن پاسخی برگردانده خواهد شد. در این جا content-type به سرور میگه که داده ی پاس داده شده، مربوط به اطلاعات یک وب فرم ساده است و length، طول اصلی داده ایِه که در بدنه ی پیام گذاشته شده. مثال زیر نشان میده که می توانید XML ساده را به وب سرور پاس بدین:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.softskill.ir
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>

مبحث آموزشی

آموزش HTTP

HTTP

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

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

تبلیغات

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

https://telegram.me/softskill_ir

آخرین مقالات

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

خبـرنــامه

Newsletters

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