HTTP - คำขอ

ไคลเอนต์ 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

ส่วนต่อไปนี้อธิบายแต่ละเอนทิตีที่ใช้ในข้อความคำร้องขอ HTTP

คำขอ - บรรทัด

Request-Line เริ่มต้นด้วยโทเค็นเมธอดตามด้วย Request-URI และเวอร์ชันโปรโตคอลและลงท้ายด้วย CRLF องค์ประกอบถูกคั่นด้วยอักขระ SP เว้นวรรค

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

เรามาดูแต่ละส่วนที่กล่าวถึงใน Request-Line

วิธีการขอ

คำขอ method ระบุวิธีการที่จะดำเนินการกับทรัพยากรที่ระบุโดยที่กำหนด Request-URI. วิธีนี้คำนึงถึงตัวพิมพ์เล็กและใหญ่และควรกล่าวถึงตัวพิมพ์ใหญ่เสมอ ตารางต่อไปนี้แสดงวิธีการที่รองรับทั้งหมดใน HTTP / 1.1

SN วิธีการและคำอธิบาย
1 GET

เมธอด GET ใช้เพื่อดึงข้อมูลจากเซิร์ฟเวอร์ที่กำหนดโดยใช้ URI ที่กำหนด คำขอโดยใช้ GET ควรดึงข้อมูลเท่านั้นและไม่ควรมีผลกระทบอื่นใดกับข้อมูล

2 HEAD

เหมือนกับ GET แต่จะโอนสายสถานะและส่วนหัวเท่านั้น

3 POST

คำขอ POST ใช้เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ตัวอย่างเช่นข้อมูลลูกค้าการอัปโหลดไฟล์ ฯลฯ โดยใช้แบบฟอร์ม HTML

4 PUT

แทนที่การแสดงปัจจุบันทั้งหมดของทรัพยากรเป้าหมายด้วยเนื้อหาที่อัปโหลด

5 DELETE

ลบการแสดงปัจจุบันทั้งหมดของทรัพยากรเป้าหมายที่กำหนดโดย URI

6 CONNECT

สร้างอุโมงค์ไปยังเซิร์ฟเวอร์ที่ระบุโดย URI ที่กำหนด

7 OPTIONS

อธิบายตัวเลือกการสื่อสารสำหรับทรัพยากรเป้าหมาย

8 TRACE

ทำการทดสอบข้อความวนกลับพร้อมกับเส้นทางไปยังทรัพยากรเป้าหมาย

คำขอ -URI

Request-URI เป็น Uniform Resource Identifier และระบุทรัพยากรที่จะใช้คำขอ ต่อไปนี้เป็นแบบฟอร์มที่ใช้บ่อยที่สุดในการระบุ URI:

Request-URI = "*" | absoluteURI | abs_path | authority
 
SN วิธีการและคำอธิบาย
1 เครื่องหมายดอกจัน *ใช้เมื่อคำขอ HTTP ไม่ได้ใช้กับทรัพยากรใดทรัพยากรหนึ่ง แต่ใช้กับเซิร์ฟเวอร์เองและได้รับอนุญาตก็ต่อเมื่อวิธีการที่ใช้ไม่จำเป็นต้องใช้กับทรัพยากร ตัวอย่างเช่น:

OPTIONS * HTTP/1.1

2 absoluteURIใช้เมื่อมีการร้องขอ HTTP ไปยังพร็อกซี พร็อกซีถูกร้องขอเพื่อส่งต่อคำขอหรือบริการจากแคชที่ถูกต้องและส่งคืนการตอบกลับ ตัวอย่างเช่น:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 รูปแบบที่พบบ่อยที่สุดของ Request-URI คือที่ใช้เพื่อระบุทรัพยากรบนเซิร์ฟเวอร์ต้นทางหรือเกตเวย์ ตัวอย่างเช่นไคลเอ็นต์ที่ต้องการดึงทรัพยากรโดยตรงจากเซิร์ฟเวอร์ต้นทางจะสร้างการเชื่อมต่อ TCP ไปยังพอร์ต 80 ของโฮสต์ "www.w3.org" และส่งบรรทัดต่อไปนี้:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

โปรดทราบว่าเส้นทางสัมบูรณ์ต้องไม่ว่างเปล่า หากไม่มีอยู่ใน URI ดั้งเดิมจะต้องกำหนดเป็น "/" (รูทเซิร์ฟเวอร์)

ขอฟิลด์ส่วนหัว

เราจะศึกษา General-header และ Entity-header ในบทแยกต่างหากเมื่อเราจะเรียนรู้ฟิลด์ส่วนหัว HTTP ในตอนนี้เรามาตรวจสอบว่าฟิลด์ส่วนหัวของคำขอคืออะไร

ฟิลด์ส่วนหัวของคำร้องขออนุญาตให้ไคลเอ็นต์ส่งข้อมูลเพิ่มเติมเกี่ยวกับคำร้องขอและเกี่ยวกับไคลเอนต์ไปยังเซิร์ฟเวอร์ ฟิลด์เหล่านี้ทำหน้าที่เป็นตัวปรับเปลี่ยนคำขอนี่คือรายการของฟิลด์ส่วนหัวคำขอที่สำคัญบางฟิลด์ที่สามารถใช้ได้ตามข้อกำหนด:

  • 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 เพื่อดึงข้อมูล hello.htm จากเว็บเซิร์ฟเวอร์ที่ทำงานบน tutorialspoint.com

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

ที่นี่เราไม่ได้ส่งข้อมูลคำขอใด ๆ ไปยังเซิร์ฟเวอร์เนื่องจากเรากำลังดึงหน้า HTML ธรรมดาจากเซิร์ฟเวอร์ การเชื่อมต่อเป็นส่วนหัวทั่วไปและส่วนหัวที่เหลือเป็นส่วนหัวของคำขอ ตัวอย่างต่อไปนี้แสดงวิธีการส่งข้อมูลแบบฟอร์มไปยังเซิร์ฟเวอร์โดยใช้เนื้อหาข้อความคำขอ:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
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.tutorialspoint.com
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>