มันหมายความว่าอะไร?
- จำนวนไบต์ของสตริงเนื้อหาที่เข้ารหัสพร้อมการเข้ารหัสที่ระบุในส่วนหัว
- จำนวนตัวอักษรของสตริงเนื้อหา
Content-Type: application/x-www-form-urlencoded
โดยเฉพาะอย่างยิ่งในกรณีของ
มันหมายความว่าอะไร?
Content-Type: application/x-www-form-urlencoded
โดยเฉพาะอย่างยิ่งในกรณีของ
คำตอบ:
ฟิลด์เอนทิตีส่วนหัวความยาวเนื้อหาระบุขนาดของเอนทิตีเนื้อความในจำนวนทศนิยมของ OCTET ที่ส่งไปยังผู้รับหรือในกรณีของวิธี HEAD ขนาดของเอนทิตีที่จะถูกส่งไปมี คำขอเป็น GET
ไม่สำคัญว่าประเภทเนื้อหาจะเป็นอะไร
มันคือจำนวนไบต์ของข้อมูลในเนื้อความของคำขอหรือการตอบกลับ ร่างกายเป็นส่วนที่มาหลังจากบรรทัดว่างด้านล่างส่วนหัว
Content-Length
ส่วนหัวเป็นตัวเลขที่แสดงถึงนั้นมีความยาวไบต์ที่แน่นอนของร่างกายของ HTTP เนื้อหา HTTP เริ่มต้นทันทีหลังจากบรรทัดว่างบรรทัดแรกที่พบหลังบรรทัดเริ่มต้นและส่วนหัว
โดยทั่วไปContent-Length
ส่วนหัวจะใช้สำหรับ HTTP 1.1 เพื่อให้ฝ่ายที่รับทราบเมื่อการตอบกลับปัจจุบัน*เสร็จสิ้นดังนั้นการเชื่อมต่อสามารถนำกลับมาใช้สำหรับคำขออื่นได้
* ... หรือคำร้องขอในกรณีของวิธีการร้องขอที่มีเนื้อหาเช่น POST, PUT หรือ PATCH
อีกทางเลือกหนึ่งคือContent-Length
สามารถละเว้นTransfer-Encoding
ส่วนหัวและส่วนหัวแบบหนาได้
หากทั้งสองContent-Length
และTransfer-Encoding
ส่วนหัวหายไปในตอนท้ายของการตอบสนองการเชื่อมต่อจะต้องปิด
ทรัพยากรต่อไปนี้เป็นแนวทางที่ฉันพบว่ามีประโยชน์มากเมื่อเรียนรู้เกี่ยวกับ HTTP:
HTTP Made Easy
หนึ่ง octet คือ 8 บิต ความยาวเนื้อหาคือจำนวนของออคเต็ตที่ส่วนเนื้อหาของข้อความ
OCTET
ที่นี่มีความหมายที่เฉพาะเจาะจงมากซึ่งหมายถึง <ลำดับข้อมูล 8 บิตใด ๆ > ดูคำจำกัดความที่w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2
ฟิลด์เอนทิตีส่วนหัวความยาวเนื้อหาระบุขนาดของเอนทิตีเนื้อความในจำนวนทศนิยมของ OCTET ที่ส่งไปยังผู้รับหรือในกรณีของวิธี HEAD ขนาดของเอนทิตีที่จะถูกส่งไปมี คำขอเป็น GET
Content-Length = "Content-Length" ":" 1*DIGIT
ตัวอย่างคือ
Content-Length: 3495
การประยุกต์ใช้งานควรใช้ข้อมูลนี้เพื่อแสดงให้เห็นการถ่ายโอนความยาวของข้อความที่ร่างกายเว้นแต่นี้เป็นสิ่งต้องห้ามตามกฎในส่วน 4.4
ความยาวเนื้อหาใด ๆ ที่มากกว่าหรือเท่ากับศูนย์จะเป็นค่าที่ถูกต้อง ส่วนที่ 4.4 อธิบายถึงวิธีการกำหนดความยาวของข้อความ - เนื้อหาหากไม่ได้กำหนดความยาวเนื้อหา
โปรดทราบว่าความหมายของฟิลด์นี้แตกต่างอย่างมากจากคำจำกัดความที่เกี่ยวข้องใน MIME ซึ่งเป็นฟิลด์ตัวเลือกที่ใช้ภายในประเภทเนื้อหา "ข้อความ / ภายนอกร่างกาย" ใน HTTP มันควรจะถูกส่งเมื่อใดก็ตามที่สามารถกำหนดความยาวของข้อความก่อนที่จะมีการถ่ายโอนเว้นแต่จะถูกห้ามโดยกฎในส่วนที่ 4.4
การตีความของฉันคือสิ่งนี้หมายความว่าความยาว "บนเส้นลวด" คือความยาวของเนื้อหาที่เข้ารหัส *
"Content-length": "3495"
จากหน้านี้
การใช้งาน POST ที่พบบ่อยที่สุดคือการส่งข้อมูลฟอร์ม HTML ไปยังสคริปต์ CGI ในกรณีนี้ส่วนหัวของ Content-Type: มักจะเป็นแอปพลิเคชัน / x-www-form-urlencoded และส่วนหัวของ Content-Length: จะให้ความยาวของข้อมูลในแบบฟอร์มที่เข้ารหัส URL (นี่คือหมายเหตุเกี่ยวกับการเข้ารหัส URL) สคริปต์ CGI ได้รับเนื้อหาของข้อความผ่าน STDIN และถอดรหัส นี่คือการส่งแบบฟอร์มทั่วไปโดยใช้ POST:
POST /path/script.cgi HTTP/1.0 From: frog@jmarshall.com User-Agent: HTTPTool/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 32
ตามข้อกำหนด :
ฟิลด์เอนทิตีส่วนหัวความยาวเนื้อหาระบุขนาดของเอนทิตีเนื้อความในจำนวนทศนิยมของ OCTET ที่ส่งไปยังผู้รับหรือในกรณีของวิธี HEAD ขนาดของเอนทิตีที่จะถูกส่งไปมี คำขอเป็น GET
Content-Length = "Content-Length" ":" 1*DIGIT
ตัวอย่างคือ
Content-Length: 3495
แอปพลิเคชันควรใช้ฟิลด์นี้เพื่อระบุความยาวการถ่ายโอนของข้อความ - ข้อความยกเว้นว่าสิ่งนี้ถูกห้ามโดยกฎในหัวข้อ 4.4
ความยาวเนื้อหาใด ๆ ที่มากกว่าหรือเท่ากับศูนย์จะเป็นค่าที่ถูกต้อง ส่วนที่ 4.4 อธิบายถึงวิธีการกำหนดความยาวของข้อความ - เนื้อหาหากไม่ได้กำหนดความยาวเนื้อหา
โปรดทราบว่าความหมายของฟิลด์นี้แตกต่างอย่างมากจากคำจำกัดความที่เกี่ยวข้องใน MIME ซึ่งเป็นฟิลด์ตัวเลือกที่ใช้ภายในประเภทเนื้อหา "ข้อความ / ภายนอกร่างกาย" ใน HTTP มันควรจะถูกส่งเมื่อใดก็ตามที่สามารถกำหนดความยาวของข้อความก่อนที่จะมีการถ่ายโอนเว้นแต่จะถูกห้ามโดยกฎในส่วนที่ 4.4
ฟิลด์เอนทิตีส่วนหัวความยาวเนื้อหาระบุขนาดของเอนทิตีเนื้อความในจำนวนทศนิยมของ OCTET ที่ส่งไปยังผู้รับหรือในกรณีของวิธี HEAD ขนาดของเอนทิตีที่จะถูกส่งไปมี คำขอเป็น GET
Content-Length = "ความยาวเนื้อหา" ":" 1 * DIGIT
ตัวอย่างคือ
ความยาวเนื้อหา: 1024
แอปพลิเคชันควรใช้ฟิลด์นี้เพื่อระบุความยาวการถ่ายโอนของส่วนข้อความ
ใน PHP คุณจะใช้สิ่งนี้
header("Content-Length: ".filesize($filename));
ในกรณีของ "Content-Type: application / x-www-form-urlencoded" ข้อมูลที่เข้ารหัสจะถูกส่งไปยังตัวแทนการประมวลผลที่กำหนดไว้เพื่อให้คุณสามารถกำหนดความยาวหรือขนาดของข้อมูลที่คุณจะโพสต์
พิจารณาว่าคุณมีส่วนหัวเช่น:
content-encoding: gzip
content-length: 52098
content-type: text/javascript; charset=UTF-8
เนื้อหาที่มีความยาวเป็นขนาดของการบีบอัดเนื้อหาของข้อความใน "octets" (คือในหน่วยของ 8 บิตซึ่งเกิดขึ้นเป็น "ไบต์" สำหรับเครื่องคอมพิวเตอร์ที่ทันสมัยทั้งหมด)
ขนาดของร่างกายข้อความจริงสามารถเป็นอย่างอื่นอาจจะ 150,280 ไบต์
จำนวนอักขระอาจแตกต่างกันอีกครั้งอาจจะเป็น 150231 ตัวอักษรเพราะอักขระยูนิโค้ดบางตัวใช้หลายไบต์ (note UTF-8 เป็นการเข้ารหัสมาตรฐาน)
ดังนั้นตัวเลขที่แตกต่างกันขึ้นอยู่กับว่าคุณใส่ใจว่ามีการส่งข้อมูลมากน้อยเพียงใดหรือเก็บข้อมูลไว้มากแค่ไหน แน่นอนไม่มีการรับประกันว่าส่วนหัวเหล่านี้จะได้รับ ..