คุกกี้ถูกส่งผ่านในโปรโตคอล HTTP อย่างไร
คุกกี้ถูกส่งผ่านในโปรโตคอล HTTP อย่างไร
คำตอบ:
เซิร์ฟเวอร์ส่งข้อมูลต่อไปนี้ในส่วนหัวการตอบกลับเพื่อตั้งค่าฟิลด์คุกกี้
Set-Cookie:
ค่าชื่อ=
หากมีชุดคุกกี้เบราว์เซอร์จะส่งรายการต่อไปนี้ในส่วนหัวคำขอ
Cookie:
ค่าชื่อ=
ดูบทความHTTP Cookieที่ Wikipedia สำหรับข้อมูลเพิ่มเติม
คุกกี้ถูกส่งผ่านเป็นส่วนหัว HTTP ทั้งในคำขอ (ไคลเอนต์ -> เซิร์ฟเวอร์) และในการตอบสนอง (เซิร์ฟเวอร์ -> ไคลเอนต์)
นอกเหนือจากที่เขียนไว้ในคำตอบอื่น ๆ รายละเอียดอื่น ๆ ที่เกี่ยวข้องกับเส้นทางของคุกกี้อายุสูงสุดของคุกกี้ไม่ว่าจะปลอดภัยหรือไม่ผ่านในส่วนหัวตอบกลับ Set-Cookie ตัวอย่างเช่น
Set-Cookie:
=
ค่าชื่อ [ ; expires=
วันที่ ] [ ; domain=
โดเมน ] [ ; path=
เส้นทาง ] [ ; secure
]
อย่างไรก็ตามรายละเอียดเหล่านี้จะไม่ถูกส่งกลับไปยังเซิร์ฟเวอร์โดยลูกค้าเมื่อทำการร้องขอ HTTP ครั้งต่อไป
นอกจากนี้คุณยังสามารถตั้งค่าHttpOnly
สถานะที่ส่วนท้ายของคุกกี้เพื่อระบุว่าคุกกี้ของคุณเป็นแบบ httponly และต้องไม่ได้รับอนุญาตให้เข้าถึงในสคริปต์ด้วยรหัสจาวาสคริปต์ สิ่งนี้จะช่วยป้องกันการโจมตีเช่นการไฮแจ็กเซสชัน
สำหรับข้อมูลเพิ่มเติมโปรดดูที่RFC 2109 นอกจากนี้ยังมีลักษณะที่บทความนิโคลัสซี Zakas ของ, คุกกี้ HTTP อธิบาย
สร้างสคริปต์ตัวอย่างเป็น resp:
#!/bin/bash
http_code=200
mime=text/html
echo -e "HTTP/1.1 $http_code OK\r"
echo "Content-type: $mime"
echo
echo "Set-Cookie: name=F"
จากนั้นทำให้สามารถเรียกใช้งานได้และดำเนินการเช่นนี้
./resp | nc -l -p 12346
เปิดเบราว์เซอร์และเรียกดู URL: http: // localhost: 1236 คุณจะเห็นค่าคุกกี้ที่เบราว์เซอร์ส่งมา
[aaa @ bbbbbbbb] $ ./resp | nc -l -p 12346 GET / HTTP / 1.1 โฮสต์: xxx.xxx.xxx.xxx:12346 การเชื่อมต่อ: Keep-alive การควบคุมแคช: max-age = 0 ยอมรับ: ข้อความ / html, แอปพลิเคชัน / xhtml + xml, แอปพลิเคชัน / xml; q = 0.9, รูปภาพ / webp, * / *; q = 0.8 การอัพเกรดที่ไม่ปลอดภัย - คำขอ: 1 ตัวแทนผู้ใช้: Mozilla / 5.0 (Windows NT 6.1) AppleWebKit / 537.36 (KHTML เช่น Gecko) Chrome / 49.0.2623.112 Safari / 537.36 ยอมรับการเข้ารหัส: gzip, deflate, sdch ยอมรับภาษา: en-US, en; q = 0.8, ru; q = 0.6 คุกกี้: ชื่อ = F