بخش های اصلی

آموزش HTTP

HTTP – پاسخ ها (Responses)

سرور، بعد از دریافت و تفسیر پیام درخواست، با یک پیام پاسخِ HTTP پاسخ می ده.

A Status-line

Zero or more header (General|Response|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 تشکیل شده از نسخه ی پروتکل که به دنبال آن کدهای عددی وضعیت (status) و عبارت متنی مرتبطش میان. عناصر با فاصله و کاراکترهای SP از هم جدا میشن.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

نسخه ی HTTP

سرور از نسخه ی 1.1 HTTP پشتیبانی می کنه و اطلاعات نسخه ی زیر را برمی گرداند.

HTTP-Version = HTTP/1.1

کدِ وضعیت (Status)

عنصرِ Status-Code یک عدد صحیح 3 رقمیِه، اولین رقمش کلاسِ response (پاسخ) را تعریف می کنه و دو رقم آخرش قانون خاصی ندارن. برای رقم اول 5 مقدار مختلف وجود داره:

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

1xx: Informational

(اطلاعاتی)به این معنیِه که درخواست دریافت شده و پردازش در حال انجامِه.

2

2xx: Success

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

3

3xx: Redirection

(تغییر مسیر)به این معنیه که عملیات دیگه ای برای تکمیل درخواست باید انجام بشه.

4

4xx: Client Error

(خطای سمت کلاینت)به این معنیه که شکل دستوری درخواست صحیح نیست یا درخواست قابل انجام نیست.

5

5xx: Server Error

(خطای سمت سرور)به این معنیه که سرور نمی تواند دستور معتبر درخواست را اجرا کنه.

کدهای وضعیتِ HTTP قابلیت گسترش دارن و لازم نیست برنامه های HTTP، معنی تمام کدهای وضعیتی ثبت شده را بدانند. لیستی از تمام کدهای وضعیتی در بخشی جداگانه به عنوان مرجع آورده شده.

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

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

فیلدهای سرآیند پاسخ این امکان را برای سرور فراهم می کنن تا اطلاعات اضافی راجع به پاسخ را که نمی توانند در  Status-Line قرار بگیرن را پاس بده. این فیلدهای سرآیند، اطلاعاتی راجع به سرور و دسترسی های آتی به منبع شناسایی شده توسطِ Request-URI، ارائه میدن.

  • Accept-Ranges
  • Age
  • ETag
  • Location
  • Proxy-Authenticate
  • Retry-After
  • Server
  • Vary
  • WWW-Authenticate

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

مثال هایی از پیام پاسخ

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

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<html>
<body>
<h1>سلام دنیا!</h1>
</body>
</html>

مثالِ پایین، یک پیام پاسخِ HTTP را که شرایطِ خطا را نشان میده، در شرایطی نمایش میده که وب سرور نمی تواند صفحه ی درخواست شده را پیدا کنه:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 یافت نشد</title>
</head>
<body>
   <h1>یافت نشد</h1>
   <p>درخواست شما برای آدرس /t.html در این سرور یافت نشد.</p>
</body>
</html>

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

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 درخواست اشتباه</title>
</head>
<body>
   <h1>درخواست اشتباه</h1>
   <p>مرورگر شما یک درخواست نامفهوم را برای این سرور ارسال کرده است.</p>
   <p>آدرس صفحه درخواستی، دارای یک سری کاراکترهای نامعتبر می باشد.</p>
</body>
</html>

مبحث آموزشی

آموزش HTTP

HTTP

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

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

تبلیغات

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

https://telegram.me/softskill_ir

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

خبـرنــامه

Newsletters

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