รูปแบบการแบ่งบรรทัดแบบใดที่เหมาะสำหรับใช้ในส่วนหัว HTTP: \r\n
หรือ\n
, และเพราะเหตุใด
รูปแบบการแบ่งบรรทัดแบบใดที่เหมาะสำหรับใช้ในส่วนหัว HTTP: \r\n
หรือ\n
, และเพราะเหตุใด
คำตอบ:
\r\n
เนื่องจากกำหนดเป็นตัวแบ่งบรรทัดในข้อกำหนดคุณสมบัติของโปรโตคอล RFC2616 ระบุไว้ที่จุดเริ่มต้นของส่วนที่ 2.2, "กฎพื้นฐาน"ค่อนข้างชัดเจน:
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, ตัวป้อนบรรทัด (10)>
HTTP / 1.1 กำหนดลำดับ CR LF เป็นเครื่องหมายสิ้นสุดบรรทัดสำหรับองค์ประกอบโปรโตคอลทั้งหมดยกเว้นเอนทิตี -ร่างกาย
RFC2616 ถูกจำหน่ายแล้วในทางเทคนิคโดย RFC7230 แต่มันทำให้ไม่มีการเปลี่ยนแปลงที่รุนแรงและอีกครั้งโทรออก CRLF เป็นตัวคั่นในมาตรา 3และที่อ้างอิง RFC RFC5234, เอกสารแนบ B.1เพื่อกำหนด "CRLF" %x0D %x0A
เป็น
อย่างไรก็ตามการตระหนักว่าผู้คนจะฝ่าฝืนมาตรฐานเพื่อจุดประสงค์ใดก็ตามจะมี "ข้อกำหนดการยอมรับ" ในส่วนที่ 19.3 (โปรดทราบว่าจะจัดลำดับที่ถูกต้องซ้ำอีกครั้ง):
ตัวยุติบรรทัดสำหรับฟิลด์ส่วนหัวของข้อความคือลำดับ CRLF อย่างไรก็ตามเราขอแนะนำให้แอปพลิเคชันเมื่อแยกวิเคราะห์ส่วนหัวดังกล่าวให้รู้จัก LF ตัวเดียวเป็นตัวยุติบรรทัดและละเว้น CR ชั้นนำ
ในRFC7230 ที่ใหม่กว่า§ 3.5
แม้ว่าตัวสิ้นสุดบรรทัดสำหรับฟิลด์บรรทัดเริ่มต้นและส่วนหัวคือลำดับ CRLF ผู้รับอาจจำ LF เดี่ยวเป็นเทอร์มิเนเตอร์บรรทัดและละเว้น CR ใด ๆ ก่อนหน้านี้
ดังนั้นถ้าคุณต้องการที่จะเป็นความชั่วร้ายหรือมิฉะนั้นทำลายกฎ RFC \r\n
ของการใช้งาน
\ r \ n เพราะ RFC 2616 บอกว่าเป็นเช่นนั้น (ส่วน 2.2, "กฎพื้นฐาน"):
HTTP / 1.1 กำหนดลำดับ CR LF เป็นเครื่องหมายสิ้นสุดของบรรทัดสำหรับ
องค์ประกอบโปรโตคอลทั้งหมดยกเว้นเอนทิตีร่างกาย (ดูภาคผนวก 19.3 สำหรับ
แอปพลิเคชันที่ยอมรับได้) ตัวทำเครื่องหมายจุดสิ้นสุดของบรรทัดภายในเอนทิตีร่างกายถูกกำหนดโดยประเภทสื่อที่เกี่ยวข้องดังที่อธิบายไว้ในส่วน 3.7CRLF = CR LF