คุณเคยสงสัยไหมว่า API ของคุณทำงานอย่างไรเบื้องหลัง? คุณจะรู้ได้อย่างไรว่าพวกเขาส่งและรับข้อมูลที่ถูกต้อง หรือถูกแก้ไขโดยตัวกลางระหว่างทางหรือไม่? นั่นคือที่มาของวิธีการ HTTP TRACE ที่มีประโยชน์ วิธีการ HTTP TRACE เป็นคำขอ HTTP ชนิดพิเศษที่ทำการทดสอบวนซ้ำข้อความตามเส้นทางไปยังทรัพยากรเป้าหมาย ช่วยให้คุณเห็นข้อความที่ได้รับจริงโดยผู้รับสุดท้าย ยกเว้นข้อมูลที่ละเอียดอ่อน เช่น คุกกี้หรือข้อมูลประจำตัว
ในบล็อกโพสต์นี้ ฉันจะแสดงวิธีใช้เมธอด HTTP TRACE เพื่อแก้ไขข้อบกพร่อง API ของคุณอย่างมืออาชีพ ฉันจะอธิบายว่าเมธอด HTTP TRACE คืออะไร ทำงานอย่างไร และมีประโยชน์อย่างไร ฉันจะแสดงวิธีใช้ Apidog ด้วย
HTTP TRACE Method คืออะไร?
เมธอด HTTP TRACE เป็นหนึ่งใน เมธอด HTTP มาตรฐาน ที่กำหนดไว้ในข้อกำหนด RFC 2616 ใช้เพื่อทำการทดสอบวนซ้ำข้อความตามเส้นทางไปยังทรัพยากรเป้าหมาย ซึ่งเป็นกลไกการแก้ไขข้อบกพร่องที่เป็นประโยชน์ ผู้รับสุดท้ายของคำขอควรสะท้อนข้อความที่ได้รับ ยกเว้นฟิลด์ใดๆ ที่อาจมีข้อมูลที่ละเอียดอ่อน กลับไปยังไคลเอนต์เป็นเนื้อหาข้อความของการตอบสนอง 200 (OK) พร้อม Content-Type ของ message/http ผู้รับสุดท้ายคือเซิร์ฟเวอร์ต้นทางหรือเซิร์ฟเวอร์แรกที่ได้รับค่า Max-Forwards เป็น 0 ในคำขอ
ไวยากรณ์ของเมธอด HTTP TRACE มีดังนี้:
TRACE /path HTTP/1.1
Host: example.com
คำขอไม่มีเนื้อหา และเส้นทางคือ URI ของทรัพยากรเป้าหมาย คำขออาจรวมส่วนหัว Max-Forwards ซึ่งระบุจำนวนตัวกลางสูงสุดที่สามารถส่งต่อคำขอได้ หากค่า Max-Forwards เป็น 0 คำขอจะไม่ถูกส่งต่อ และการตอบสนองควรถูกสร้างขึ้นโดยเซิร์ฟเวอร์แรกที่ได้รับ หากไม่ได้ระบุค่า Max-Forwards คำขอสามารถส่งต่อได้อย่างไม่มีกำหนด จนกว่าจะถึงเซิร์ฟเวอร์ต้นทางหรือตัวกลางที่ไม่รองรับเมธอด HTTP TRACE
การตอบสนองต่อคำขอ HTTP TRACE ควรมีรหัสสถานะ 200 (OK) และ Content-Type ของ message/HTTP เนื้อหาการตอบสนองควรมีข้อความที่ได้รับจริงโดยผู้รับสุดท้าย ยกเว้นข้อมูลที่ละเอียดอ่อน การตอบสนองอาจรวมส่วนหัว Via ซึ่งระบุตัวกลางที่ประมวลผลคำขอ ส่วนหัว Via ควรมีรายการอย่างน้อยหนึ่งรายการ โดยแต่ละรายการประกอบด้วยชื่อโปรโตคอล เวอร์ชันโปรโตคอล และตัวระบุของตัวกลาง ตัวอย่างเช่น:
HTTP/1.1 200 OK
Content-Type: message/http
Via: 1.1 proxy1.example.com, 1.1 proxy2.example.com
TRACE /path HTTP/1.1
Host: example.com
การตอบสนองแสดงให้เห็นว่าคำขอถูกส่งต่อโดยพร็อกซีสองตัว คือ proxy1.example.com และ proxy2.example.com ก่อนที่จะถึงผู้รับสุดท้าย เนื้อหาการตอบสนองสะท้อนคำขอเดิม รวมถึงเส้นทางและส่วนหัวของโฮสต์
เมธอด HTTP TRACE ทำงานอย่างไร?
เมธอด HTTP TRACE ทำงานโดยการส่งคำขอไปยังทรัพยากรเป้าหมายและคาดหวังการตอบสนองที่มีข้อความคำขอเดียวกัน สิ่งนี้ช่วยให้ไคลเอนต์เห็นข้อความที่ได้รับจริงโดยเซิร์ฟเวอร์ และตรวจสอบว่ามีการแก้ไขหรือข้อผิดพลาดใดๆ ระหว่างทางหรือไม่
เมธอด HTTP TRACE สามารถใช้เพื่อแก้ไขข้อบกพร่องในแง่มุมต่างๆ ของพฤติกรรม API เช่น:
- การมีอยู่และตัวตนของตัวกลาง เช่น พร็อกซี เกตเวย์ หรือไฟร์วอลล์ ที่อาจส่งผลต่อ คำขอ API และการตอบสนอง ส่วนหัว Via สามารถเปิดเผยตัวกลางที่ประมวลผลคำขอและเวอร์ชันโปรโตคอลของพวกเขา
- ความสมบูรณ์และความถูกต้องของส่วนหัวและเนื้อหาคำขอและตอบสนอง API เนื้อหาการตอบสนองสามารถแสดงข้อความที่ได้รับจริงโดยเซิร์ฟเวอร์ และไคลเอนต์สามารถเปรียบเทียบกับคำขอเดิมเพื่อดูว่ามีการเปลี่ยนแปลงหรือความคลาดเคลื่อนหรือไม่
- ประสิทธิภาพและเวลาแฝงของคำขอและตอบสนอง API ไคลเอนต์สามารถวัดเวลาที่ใช้ในการส่งคำขอและรับการตอบสนอง และระบุคอขวดหรือความล่าช้าในเส้นทาง API
เมธอด HTTP TRACE ยังสามารถใช้เพื่อทดสอบความปลอดภัยและการปฏิบัติตามข้อกำหนดของ API เช่น:
- การปกป้องข้อมูลที่ละเอียดอ่อน เช่น คุกกี้ ข้อมูลประจำตัว หรือโทเค็น ที่อาจรวมอยู่ในคำขอและตอบสนอง API เซิร์ฟเวอร์ไม่ควรสะท้อนฟิลด์ใดๆ ที่อาจมีข้อมูลที่ละเอียดอ่อน และไคลเอนต์ไม่ควรส่งเนื้อหาใดๆ ในคำขอ หรือสร้างฟิลด์ใดๆ ที่อาจรวมข้อมูลที่ละเอียดอ่อน
- การสนับสนุนและการบังคับใช้เมธอด HTTP TRACE โดยเซิร์ฟเวอร์และตัวกลาง เซิร์ฟเวอร์และตัวกลางควรปฏิบัติตามข้อกำหนด RFC 2616 และตอบสนองด้วยรหัสสถานะ 200 (OK) และประเภทเนื้อหา message/http หากเซิร์ฟเวอร์หรือตัวกลางไม่รองรับเมธอด HTTP TRACE ควรตอบสนองด้วยรหัสสถานะ 405 (Method Not Allowed) และส่วนหัว Allow ที่แสดงรายการเมธอดที่รองรับ หากเซิร์ฟเวอร์หรือตัวกลางไม่อนุญาตเมธอด HTTP TRACE ควรตอบสนองด้วยรหัสสถานะ 403 (Forbidden)

ประโยชน์ของเมธอด HTTP TRACE คืออะไร?
เมธอด HTTP TRACE มีประโยชน์หลายประการสำหรับนักพัฒนา ผู้ทดสอบ และผู้บริโภค API เช่น:
- เป็นวิธีที่ง่ายและได้มาตรฐานในการแก้ไขข้อบกพร่อง API โดยไม่ต้องใช้เครื่องมือหรือไลบรารีเพิ่มเติม รองรับโดยเซิร์ฟเวอร์และไคลเอนต์ HTTP ส่วนใหญ่ และเป็นไปตามข้อกำหนด RFC 2616
- เป็นเมธอดที่ปลอดภัยและ idempotent ซึ่งหมายความว่าจะไม่แก้ไขสถานะของเซิร์ฟเวอร์หรือทรัพยากร และสามารถทำซ้ำได้โดยไม่มีผลข้างเคียงใดๆ นอกจากนี้ยังไม่สามารถแคชได้ ซึ่งหมายความว่าจะสะท้อนสถานะปัจจุบันของ API เสมอ
- เป็นเมธอดที่มีประสิทธิภาพและหลากหลาย ซึ่งหมายความว่าสามารถใช้เพื่อแก้ไขข้อบกพร่องในแง่มุมต่างๆ ของพฤติกรรม API เช่น ตัวกลาง ส่วนหัว เนื้อหา ประสิทธิภาพ เวลาแฝง ความปลอดภัย และการปฏิบัติตามข้อกำหนด นอกจากนี้ยังสามารถใช้เพื่อทดสอบสถานการณ์และการใช้งานต่างๆ โดยการเปลี่ยนเส้นทาง โฮสต์ Max-Forwards และส่วนหัวอื่นๆ
วิธีใช้ Apidog เพื่อส่งและวิเคราะห์คำขอ HTTP TRACE?
Apidog เป็นแพลตฟอร์มแบบบูรณาการสำหรับการออกแบบ API, การแก้ไขข้อบกพร่อง, การพัฒนา, การจำลอง และการทดสอบ ซึ่งรวม Postman + Swagger + Mock + JMeter เพื่อแก้ไขปัญหาการซิงโครไนซ์ข้อมูลระหว่างระบบต่างๆ โดยใช้ชุดระบบและชุดข้อมูล Apidog เป็นชุดเครื่องมือที่สมบูรณ์ซึ่งเชื่อมต่อวงจรชีวิต API ทั้งหมด ช่วยให้ทีม R&D ใช้แนวทางปฏิบัติที่ดีที่สุดสำหรับการพัฒนา API Design-first
Apidog นำเสนอวิธีที่สะดวกและง่ายในการส่งและวิเคราะห์คำขอ HTTP TRACE รวมถึงเมธอด HTTP อื่นๆ ในการใช้ Apidog เพื่อส่งและวิเคราะห์คำขอ HTTP TRACE คุณต้องทำตามขั้นตอนเหล่านี้:
- สร้างคำขอใหม่ หรือเปิดคำขอที่มีอยู่ ซึ่งคุณต้องการส่งและวิเคราะห์คำขอ HTTP TRACE ของคุณ

- ในตัวแก้ไข API ให้เลือกเมธอด TRACE จากเมนูแบบเลื่อนลง และป้อนเส้นทางของทรัพยากรเป้าหมาย คุณยังสามารถป้อนส่วนหัวของโฮสต์และ Max-Forwards ได้หากจำเป็น

- คลิกปุ่ม Send เพื่อส่งคำขอ HTTP TRACE ไปยังทรัพยากรเป้าหมาย และรอการตอบสนอง

ในแผงการตอบสนอง คุณสามารถดูสถานะ
วิธีเปิดหรือปิดใช้งานเมธอด HTTP TRACE บนเซิร์ฟเวอร์
ขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์และนโยบายความปลอดภัยของคุณ คุณอาจต้องการเปิดหรือปิดใช้งานเมธอด HTTP TRACE บนเซิร์ฟเวอร์ของคุณ การเปิดใช้งานเมธอด HTTP TRACE ช่วยให้คุณแก้ไขข้อบกพร่อง API ของคุณได้ง่ายขึ้น แต่อาจเปิดเผยข้อมูลบางอย่างที่อาจถูกนำไปใช้โดยผู้ประสงค์ร้าย การปิดใช้งานเมธอด HTTP TRACE จะป้องกันการโจมตีดังกล่าว แต่ยังจำกัดความสามารถในการแก้ไขข้อบกพร่องของคุณด้วย
กระบวนการเปิดหรือปิดใช้งานเมธอด HTTP TRACE จะแตกต่างกันไปขึ้นอยู่กับประเภทและเวอร์ชันของเซิร์ฟเวอร์ของคุณ นี่คือตัวอย่างบางส่วนของวิธีการทำสำหรับเซิร์ฟเวอร์ทั่วไปบางตัว:
- Apache: คุณสามารถใช้คำสั่ง TraceEnable ในไฟล์ httpd.conf เพื่อปิดใช้งานหรือจำกัดเมธอด TRACE ตัวอย่างเช่น หากต้องการปิดใช้งานเมธอด TRACE โดยสมบูรณ์ คุณสามารถเพิ่มบรรทัดต่อไปนี้:
TraceEnable off
หากต้องการจำกัดเมธอด TRACE ให้ใช้ได้เฉพาะเซิร์ฟเวอร์ในเครื่อง คุณสามารถเพิ่มบรรทัดต่อไปนี้:
TraceEnable extended
- Nginx: คุณสามารถใช้คำสั่ง limit_except ในไฟล์ nginx.conf เพื่อปิดใช้งานหรือจำกัดเมธอด TRACE ตัวอย่างเช่น หากต้องการปิดใช้งานเมธอด TRACE โดยสมบูรณ์ คุณสามารถเพิ่มบล็อกต่อไปนี้:
location / {
limit_except GET POST HEAD {
deny all;
}
}
หากต้องการจำกัดเมธอด TRACE ให้ใช้ได้เฉพาะเซิร์ฟเวอร์ในเครื่อง คุณสามารถเพิ่มบล็อกต่อไปนี้:
location / {
limit_except GET POST HEAD TRACE {
deny all;
}
if ($request_method = TRACE) {
return 200;
}
}
บทสรุป
เมธอด HTTP TRACE เป็นเครื่องมือแก้ไขข้อบกพร่องที่เป็นประโยชน์สำหรับ API ซึ่งช่วยให้คุณทำการทดสอบวนซ้ำข้อความตามเส้นทางไปยังทรัพยากรเป้าหมายได้ สามารถช่วยคุณตรวจสอบการมีอยู่และตัวตนของตัวกลาง ความสมบูรณ์และความถูกต้องของส่วนหัวและเนื้อหา ประสิทธิภาพและเวลาแฝงของคำขอและการตอบสนอง และความปลอดภัยและการปฏิบัติตามข้อกำหนดของ API ของคุณ
ในการใช้เมธอด HTTP TRACE คุณต้องส่งคำขอไปยังทรัพยากรเป้าหมายและคาดหวังการตอบสนองที่สะท้อนข้อความคำขอเดียวกัน ยกเว้นข้อมูลที่ละเอียดอ่อน คุณสามารถใช้เครื่องมือและเฟรมเวิร์กต่างๆ เพื่อส่งและวิเคราะห์คำขอ HTTP TRACE เช่น Apidog Apidog นำเสนอวิธีที่สะดวกและง่ายในการส่งและวิเคราะห์คำขอ HTTP TRACE