คุณใช้ POST เมื่อใดและเมื่อใดที่คุณใช้ GET


343

จากสิ่งที่ฉันสามารถรวบรวมมีสามประเภท:

  1. ห้ามใช้GETและใช้งานPOST
  2. ห้ามใช้POSTและใช้งานGET
  3. มันไม่สำคัญว่าคุณจะใช้อันไหน

ฉันถูกต้องโดยสมมติว่าทั้งสามกรณี? ถ้าเป็นเช่นนั้นมีตัวอย่างอะไรบ้างจากแต่ละกรณี?


1
ที่จริงไม่จริงอย่างแน่นอน ทั้ง GET และ POST สามารถมองเห็นได้ในระดับเดียวกันหากคุณตรวจสอบส่วนหัวที่ส่งมาจากเบราว์เซอร์ของคุณคุณจะเห็นรายการคู่คีย์ - ค่าที่คุณโพสต์
Velimir Tchatchevsky


1
ไม่มีวิธีมาตรฐานในการเข้ารหัสมากกว่าชื่อ -> คู่ของค่าลงในสตริงการสืบค้นดังนั้นหากคำขอของคุณนั้นพื้นฐานมาก (เช่นไม่มีอาร์เรย์หรือโครงสร้างข้อมูลที่ซ้อนกัน) คุณควรพิจารณา POST เท่านั้นซึ่งมีฟิลด์เนื้อหาที่คุณสามารถใช้กับรูปแบบการเข้ารหัส (JSON, XML เป็นต้น)
themihai

คำตอบ:


376

ใช้POSTสำหรับการกระทำที่เป็นอันตรายเช่นการสร้าง (ฉันทราบถึงการประชด) การแก้ไขและการลบเนื่องจากคุณไม่สามารถPOSTดำเนินการใด ๆ ในแถบที่อยู่ของเบราว์เซอร์ของคุณ ใช้GETเมื่อปลอดภัยเพื่อให้บุคคลสามารถเรียกการกระทำได้ ดังนั้น URL เช่น:

http://myblog.org/admin/posts/delete/357

ควรนำคุณเข้าสู่หน้าการยืนยันแทนที่จะลบรายการออก มันง่ายกว่าที่จะหลีกเลี่ยงอุบัติเหตุด้วยวิธีนี้

POSTมีความปลอดภัยมากกว่าGETเนื่องจากคุณไม่ได้รวมข้อมูลไว้ใน URL ดังนั้นการใช้GETเป็นmethodรูปแบบ HTML ที่รวบรวมรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ ไม่ใช่ความคิดที่ดีที่สุด

หนึ่งบันทึกสุดท้าย: สามารถส่งจำนวนมากของข้อมูลที่มากกว่าPOST GET'POST' ไม่มีข้อ จำกัด ด้านขนาดสำหรับข้อมูลที่ส่งขณะที่ 'GET' จำกัด ไว้ที่ 2048 อักขระ


82
การตอบสนองต่อคำขอ GET อาจถูกทำให้เฉื่อยชา การตอบสนองต่อ POST ต้องไม่
mkoeller

31
วิธีที่ไม่รวมข้อมูลใน URL ทำให้ปลอดภัยมากขึ้น? (Btw ฉันเป็นหนึ่งในผู้ที่เชื่อว่าการรักษาความปลอดภัยที่ผิดพลาดเป็นอันตรายมากกว่าการไม่มีความปลอดภัยเลย)
ePharaoh

42
@ePharaoh: มันหยุดคนอ่านรหัสผ่านโดยดูที่ผู้ใช้ที่แถบที่อยู่
Quentin

35
@ePharaoh: "การเปิดเผยข้อมูลน้อยลงไปยังผู้สังเกตการณ์ชั่วคราว" น่าจะเป็นสูตรที่ดีกว่า "ปลอดภัยกว่า" - URL อาจท้ายที่สุดหลายแห่งเช่นล็อกผู้อ้างอิงแคช คุณแน่นอนว่านี่ไม่ได้เพิ่มความปลอดภัย - แต่มัน จำกัด การปฏิบัติที่ไม่ปลอดภัยที่สุด (ดูเพิ่มเติมที่: thedailywtf.com/Articles/The_Spider_of_Doom.aspx )
Piskvor ออกจากอาคาร

24
@ David Dorward: หรือโดยชื่อสามัญเพิ่มเติม: Shoulder Shoulder
Idan K

206

โดยสังเขป

  • ใช้GETสำหรับsafe andidempotentการร้องขอ
  • ใช้POSTสำหรับneither safe nor idempotentการร้องขอ

ในรายละเอียด มีสถานที่ที่เหมาะสมสำหรับแต่ละ แม้ว่าคุณจะไม่ปฏิบัติตามหลักการRESTfulก็สามารถได้รับมากมายจากการเรียนรู้เกี่ยวกับ REST และวิธีการทำงานของทรัพยากรที่มุ่งเน้น

แอพลิเคชันจะสงบสำหรับการดำเนินงานซึ่งมีทั้งuse GETssafe and idempotent

การsafeดำเนินการเป็นการดำเนินการที่not change the dataร้องขอ

การidempotentดำเนินการเป็นสิ่งที่ผลลัพธ์be the sameไม่ว่าคุณจะร้องขอกี่ครั้งก็ตาม

มันยืนเพื่อเหตุผลที่ว่าในขณะที่ได้รับจะใช้สำหรับความปลอดภัยการดำเนินงานของพวกเขาโดยอัตโนมัตินอกจากนี้ยังidempotent โดยทั่วไปแล้ว GET จะใช้สำหรับดึงข้อมูลทรัพยากร (เช่นคำถามและคำตอบที่เกี่ยวข้องในสแต็คโอเวอร์โฟลว์) หรือการรวบรวมทรัพยากร

app ที่สงบจะใช้สำหรับการดำเนินงานที่มีPUTsnot safe but idempotent

ฉันรู้ว่าคำถามเกี่ยวกับ GET และ POST แต่ฉันจะกลับไปที่ POST ภายในไม่กี่วินาที

โดยทั่วไปแล้ว PUT จะใช้สำหรับการแก้ไขทรัพยากร (เช่นการแก้ไขคำถามหรือคำตอบเกี่ยวกับการโอเวอร์โฟลว์สแต็ก)

POSTจะถูกนำมาใช้สำหรับการดำเนินการใด ๆ neither safe or idempotentซึ่งเป็น

โดยทั่วไปแล้ว POST จะถูกใช้เพื่อสร้างทรัพยากรใหม่เช่นการสร้างคำถาม SO ใหม่ (แม้ว่าในบางการออกแบบจะใช้ PUT สำหรับสิ่งนี้ด้วย)

หากคุณรัน POST สองครั้งคุณจะต้องสร้างคำถามใหม่สองคำถาม

นอกจากนี้ยังมีการดำเนินการลบ แต่ฉันคิดว่าฉันสามารถออกจากที่นั่น :)

อภิปรายผล

โดยทั่วไปแล้วเว็บเบราว์เซอร์สมัยใหม่มักรองรับ GET และ POST อย่างน่าเชื่อถือเท่านั้น (คุณสามารถดำเนินการทั้งหมดเหล่านี้ได้ผ่านการเรียกใช้จาวาสคริปต์ แต่ในแง่ของการป้อนข้อมูลในรูปแบบและการกดส่งคุณโดยทั่วไปมีสองตัวเลือก) ในแอปพลิเคชัน RESTful POST มักจะถูก overriden เพื่อให้การเรียก PUT และ DELETE

แต่แม้ว่าคุณจะไม่ได้ปฏิบัติตามหลักการ RESTful แต่ก็มีประโยชน์ที่จะคิดในแง่ของการใช้ GET สำหรับการดึง / ดูข้อมูลและ POST สำหรับการสร้าง / แก้ไขข้อมูล

คุณไม่ควรใช้ GET สำหรับการดำเนินการที่เปลี่ยนแปลงข้อมูล หากเครื่องมือค้นหารวบรวมข้อมูลลิงก์ไปยัง op ที่ชั่วร้ายของคุณหรือบุ๊กมาร์กไคลเอ็นต์อาจทำให้เกิดปัญหาใหญ่


หากคุณจะสร้างทรัพยากร APIREST สำหรับการเข้าสู่ระบบซึ่งคุณจะเลือกสิ่งนี้ปลอดภัยและเป็น idempotent ฉันเป็นแขก
jhonny lopez

1
การรับที่ปลอดภัยไม่ใช่ idempotent โดยอัตโนมัติ ชุดผลลัพธ์อาจแตกต่างกันโดยไม่มีคิวรีทำลาย
RichieHH

1
วิธีที่คุณเขียนมันบางอย่างเช่น "GET currenttime" อาจผิดเพราะมันไม่ใช่ idempotent (ในแง่ที่ว่าคำค้นหาที่ซ้ำ ๆ อาจให้ผลลัพธ์ที่ต่างกัน) ในความเป็นจริงสิ่งที่สอบถามอาจเปลี่ยนแปลงได้ตลอดเวลา ดังนั้นหนึ่งควรแสดง idempotence ค่อนข้างในแง่ของผลข้างเคียงของแบบสอบถามเอง เนื่องจากเพียงแค่ขอเวลาปัจจุบันไม่มีผลข้างเคียงนี่คือ - อย่างที่ใคร ๆ คาดหวัง - ผู้สมัครที่สมบูรณ์แบบสำหรับ GET และไม่ใช่ POST
Hagen von Eitzen

79

ใช้ GET ถ้าคุณไม่สนใจคำขอที่ทำซ้ำ (นั่นคือมันไม่เปลี่ยนสถานะ)

ใช้ POST หากการดำเนินการเปลี่ยนสถานะของระบบ


1
เนื่องจากแบบฟอร์มเปลี่ยนสถานะของระบบเหตุใดจึงใช้วิธีการเริ่มต้นของแท็กแบบฟอร์ม HTML คือ GET
ziiweb

3
@ user248959 ช่องค้นหาเปลี่ยนสถานะที่มองเห็นได้หรือไม่ ค่าเริ่มต้นถูกตั้งค่าเป็นเวลานานแล้วอาจเกือบจะเป็นไปโดยไม่ตั้งใจ ฉันไม่ได้เจาะลึกประวัติเพื่อทราบว่า POST เป็นตัวเลือกที่แบบฟอร์มจุดเป็นตัวเลือกหรือไม่
Douglas Leeder

@ziiweb แม้ว่ากรณีการใช้งานส่วนใหญ่ของ <form> คือ POST จะเป็นการดีกว่าหากกำหนด dafault ให้เป็น "GET ที่ไม่เป็นอันตราย" สิ่งนี้อาจดูไร้สาระจากมุมมองด้านความปลอดภัยเมื่อนำไปสู่ข้อมูลที่เปิดเผยในล็อกไฟล์เป็นต้น แต่มันไม่ปลอดภัยเมื่อคำนึงถึงข้อมูลฝั่งเซิร์ฟเวอร์ (การให้บริการไม่ควรแก้ไขข้อมูลบน GET) ฉันคิดว่าจะมีการกำหนดโฟกัสที่แตกต่างกันในวันนี้ (ดีกว่าโดยปล่อยค่าเริ่มต้นใด ๆ และmethodบังคับใช้)
Hagen von Eitzen

สมมติว่าฉันมีจุดปลายที่ยอมรับไฟล์เป็นอินพุตทำการประมวลผลบางอย่างบนไฟล์ (ตัวอย่าง - แยกข้อมูลตาม regex) และส่งคืนข้อมูล JSON จากนั้นฉันสามารถใช้คำขอ GET เพื่ออัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ หรือฉันควรใช้คำขอ POST
ตัวแปร

67

เวอร์ชั่นสั้น

GET: โดยปกติจะใช้สำหรับคำขอค้นหาที่ส่งหรือคำขอใด ๆ ที่คุณต้องการให้ผู้ใช้สามารถดึงหน้าเว็บที่แน่นอนอีกครั้ง

ข้อดีของ GET:

  • สามารถบุ๊กมาร์ก URL ได้อย่างปลอดภัย
  • สามารถโหลดหน้าใหม่ได้อย่างปลอดภัย

ข้อเสียของ GET:

  • ตัวแปรถูกส่งผ่าน url เป็นคู่ของชื่อ - ค่า (ความเสี่ยงด้านความปลอดภัย)
  • จำนวนตัวแปรที่ จำกัด ที่สามารถส่งผ่านได้ (ขึ้นอยู่กับเบราว์เซอร์ตัวอย่างเช่นInternet Explorer จำกัด ไว้ที่ 2,048 ตัวอักษร )

POST: ใช้สำหรับคำขอความปลอดภัยที่สูงขึ้นซึ่งอาจใช้ข้อมูลเพื่อแก้ไขฐานข้อมูลหรือหน้าเว็บที่คุณไม่ต้องการให้ใครบางคนคั่นหน้า

ข้อดีของการโพสต์:

  • คู่ค่าชื่อจะไม่แสดงใน url (ความปลอดภัย + = 1)
  • สามารถส่งผ่านชื่อ POST ได้ไม่ จำกัด จำนวนคู่ การอ้างอิง

ข้อเสียของการโพสต์:

  • เพจที่ใช้ข้อมูล POST ไม่สามารถคั่นหน้าได้ (ถ้าคุณต้องการ)

รุ่นที่ยาวกว่า

โดยตรงจากHypertext Transfer Protocol - HTTP / 1.1 :

9.3 GET

วิธีการ GET หมายถึงการดึงข้อมูลใด ๆ (ในรูปแบบของนิติบุคคล) จะถูกระบุโดย Request-URI หาก Request-URI อ้างถึงกระบวนการผลิตข้อมูลมันเป็นข้อมูลที่ผลิตซึ่งจะถูกส่งคืนเป็นเอนทิตีในการตอบกลับไม่ใช่ข้อความต้นฉบับของกระบวนการยกเว้นว่าข้อความนั้นเป็นผลลัพธ์ของกระบวนการ

ซีแมนทิกส์ของเมธอด GET จะเปลี่ยนเป็น "เงื่อนไขแบบรับ" หากข้อความคำร้องขอมีฟิลด์ If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match หรือ If-Range เมธอด GET แบบมีเงื่อนไขร้องขอให้โอนเอนทิตีภายใต้สถานการณ์ที่อธิบายโดยฟิลด์ส่วนหัวที่มีเงื่อนไข วิธี GET แบบมีเงื่อนไขมีวัตถุประสงค์เพื่อลดการใช้เครือข่ายที่ไม่จำเป็นโดยอนุญาตให้รีเฟรชเอนทิตีที่แคชไว้โดยไม่ต้องมีการร้องขอหลายครั้งหรือถ่ายโอนข้อมูลที่มีอยู่แล้วโดยลูกค้า

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

การตอบสนองต่อคำขอ GET นั้นจะสามารถแคชได้หากว่าเป็นไปตามข้อกำหนดสำหรับการแคช HTTP ที่อธิบายไว้ในส่วนที่ 13

ดูส่วนที่ 15.1.3 สำหรับข้อควรพิจารณาด้านความปลอดภัยเมื่อใช้กับแบบฟอร์ม

9.5 โพสต์

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

  • คำอธิบายประกอบของทรัพยากรที่มีอยู่;

  • การโพสต์ข้อความไปยังกระดานข่าวกลุ่มข่าวสารรายชื่อผู้รับจดหมายหรือกลุ่มบทความที่คล้ายกัน

  • การจัดเตรียมบล็อกข้อมูลเช่นผลลัพธ์ของการส่งแบบฟอร์มไปยังกระบวนการจัดการข้อมูล

  • การขยายฐานข้อมูลผ่านการดำเนินการผนวก

ฟังก์ชั่นที่เกิดขึ้นจริงดำเนินการโดยวิธีการ POST จะถูกกำหนดโดยเซิร์ฟเวอร์และมักจะขึ้นอยู่กับ Request-URI เอนทิตีที่ถูกโพสต์นั้นเป็นสังกัดอยู่ใน URI นั้นในลักษณะเดียวกับที่ไฟล์นั้นถูกส่งไปยังไดเรกทอรีที่มีอยู่บทความข่าวจะถูกส่งไปยังกลุ่มข่าวสารที่โพสต์ไว้หรือบันทึกเป็นสังกัดในฐานข้อมูล

การกระทำที่ดำเนินการโดยวิธี POST อาจไม่ส่งผลให้เกิดทรัพยากรที่สามารถระบุได้โดย URI ในกรณีนี้ 200 (OK) หรือ 204 (ไม่มีเนื้อหา) เป็นสถานะการตอบสนองที่เหมาะสมขึ้นอยู่กับว่าการตอบสนองนั้นมีเอนทิตีที่อธิบายผลลัพธ์หรือไม่


2
"หน้าเว็บที่ใช้ข้อมูลการโพสต์ไม่สามารถคั่นหน้าได้": ดีนั่นเป็นข้อได้เปรียบใช่มั้ย คุณอาจไม่ต้องการให้บุ๊กมาร์กการแก้ไขข้อมูลของคุณถูกทำเครื่องหมายไว้
Piskvor ออกจากอาคาร

ฉันคิดว่าถ้าโพสต์ทุกครั้งที่คุณใช้คุณใช้มันเพื่อจุดประสงค์ด้านความปลอดภัยนี่จะเป็นข้อได้เปรียบ โดยปกติแล้วจะมี แต่มีการจำกัดความยาวที่ GET อาจมีบางคนเพิ่งผ่านข้อมูลที่ไม่เกี่ยวข้องกับความปลอดภัยจำนวนมากและต้องการให้มีการคั่นหน้าเว็บหรือไม่ ใครจะรู้ ...
คิดสร้างสรรค์

เกี่ยวกับข้อเสียของ GET กล่าวคือ "ตัวแปรถูก pased ผ่าน url เป็นคู่ของชื่อ - ค่า" MVC จะกำจัดปัญหาดังกล่าวเนื่องจากการกำหนดเส้นทางและ URL ที่เป็นมิตรกับผลลัพธ์หรือไม่
MrBoJangles

@MrBoJangles: การใช้ URL ที่ดีไม่ได้ป้องกันความเสี่ยงที่เรียกว่า หมายเหตุด้านข้าง: MVC ไม่ต้องการการกำหนดเส้นทางด้วย URL ที่ดีและการกำหนดเส้นทางด้วย URL ที่ดีไม่จำเป็นต้องใช้ MVC; บางครั้งใช้ร่วมกัน แต่สามารถใช้แยกกันได้
icktoofay

ในโลก. NET เพื่อจุดประสงค์ในการใช้งานจริงความสามารถในการ url ที่ดี = MVC ฉันคิดว่าคุณสามารถเขียน IIS ใหม่หรือเขียนโค้ดแปลก ๆ แต่ก็ดีกว่า MVC ไม่จำเป็นต้องพูดเพื่อชัยชนะ
MrBoJangles

28

สิ่งสำคัญอันดับแรกคือความหมายของ GET และ POST:

  • GET ควรใช้เพื่อ ... รับ ... ข้อมูลบางอย่างจากเซิร์ฟเวอร์
  • ในขณะที่ POST ควรใช้ในการส่งข้อมูลบางอย่างไปยังเซิร์ฟเวอร์


หลังจากนั้นสองสิ่งที่สามารถสังเกตได้:

  • เมื่อใช้ GET ผู้ใช้ของคุณสามารถใช้ปุ่ม "ย้อนกลับ" ในเบราว์เซอร์และสามารถคั่นหน้า
  • มีขนาด จำกัด ของพารามิเตอร์ที่คุณสามารถส่งผ่านเป็น GET (2KB สำหรับบางรุ่นของ Internet Explorer ถ้าฉันไม่เข้าใจผิด) ; ขีด จำกัด มีมากขึ้นสำหรับ POST และโดยทั่วไปขึ้นอยู่กับการกำหนดค่าของเซิร์ฟเวอร์


อย่างไรก็ตามฉันไม่คิดว่าเราจะ "อยู่" ได้หากไม่มี GET: คิดถึงจำนวน URL ที่คุณใช้กับพารามิเตอร์ในสตริงข้อความค้นหาทุกวัน - หากไม่มี GET สิ่งเหล่านั้นจะไม่ทำงาน ;-)


ดีถ้าทุกคนใช้ URL ที่สวยในสไตล์ GET A: http://example.com/var1/value1/var2/value2/var3/value3เราสามารถ 'เทคนิค' ไม่ได้รับอีกต่อไป ...
ไทเลอร์คาร์เตอร์

5
@ Chacha102 ยกเว้นว่าคุณยังต้องได้รับทรัพยากรนั้น หน้าเว็บรูปภาพสคริปต์และอื่น ๆ เกือบทั้งหมดถูกโหลดในเว็บเบราว์เซอร์ที่ใช้ GET
Ryan

3
@ Chacha102 - แม้การwww.mypage.com/contact/ใช้งานจะได้รับภายในเพื่อสิ่งที่ชอบindex.php?url=/contact/
Thiago Belem

1
เน้นขนาดที่ จำกัด ของ GET! นอกจากนี้พารามิเตอร์ GET ยังรวมอยู่ในที่คั่นหนังสือในขณะที่ POST ไม่ได้ และผู้ใช้สามารถรีเฟรชหน้าที่ร้องขอ GET แต่ไม่ใช่หน้าเว็บที่ร้องขอโดย POST (ไม่มีคำเตือนเกี่ยวกับการส่งข้อมูลอีกครั้ง)
Ricket

12

นอกเหนือจากข้อ จำกัด ด้านความยาวในเว็บเบราว์เซอร์จำนวนมากยังมีความแตกต่างทางความหมาย GETs ควรจะ "ปลอดภัย" เนื่องจากเป็นการดำเนินการแบบอ่านอย่างเดียวซึ่งจะไม่เปลี่ยนสถานะเซิร์ฟเวอร์ โดยทั่วไปแล้วโพสต์จะเปลี่ยนสถานะและจะให้คำเตือนเกี่ยวกับการส่งอีกครั้ง โปรแกรมรวบรวมข้อมูลเว็บของเครื่องมือค้นหาอาจสร้าง GET แต่ไม่ควรทำ POST

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


+1 นี่คือความแตกต่างทางแนวคิดที่สำคัญจาก rfc ที่ทุกอย่างอื่นตามมา w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3
Frank Farmer

8

กฎทั่วไปของฉันคือการใช้รับเมื่อคุณกำลังร้องขอไปยังเซิร์ฟเวอร์ที่จะไม่เปลี่ยนสถานะ โพสต์สงวนไว้สำหรับคำขอไปยังเซิร์ฟเวอร์ที่เปลี่ยนสถานะ


8

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

gotcha อีกหนึ่งตัวที่มี GETs - พวกเขาได้รับการจัดทำดัชนีโดยเครื่องมือค้นหาและระบบอัตโนมัติอื่น ๆ Google เคยมีผลิตภัณฑ์ที่จะดึงข้อมูลลิงก์ล่วงหน้าบนหน้าเว็บที่คุณกำลังดูดังนั้นพวกเขาจะโหลดเร็วขึ้นถ้าคุณคลิกลิงก์เหล่านั้น มันทำให้เกิดความเสียหายอย่างใหญ่หลวงในเว็บไซต์ที่มีลิงก์เช่นdelete.php?id=1- ผู้คนสูญเสียเว็บไซต์ทั้งหมด


1
เว็บเซิร์ฟเวอร์ของคุณอาจมีข้อ จำกัด ในเรื่องนี้
Billy ONeal

มีการ จำกัด การโพสต์เช่นกัน
chelmertz

1
เยี่ยมมาก @BillyONeal ฉันได้เพิ่มสิ่งต่อไปนี้ @chelmertz ใช่ แต่ฉันสามารถเปลี่ยนได้ถ้าฉันต้องการและมันสูงกว่ามาก ฉันโพสต์ไฟล์ 1 กิกะไบต์ลงในอินสแตนซ์ Apache เช่น
ceejayoz

ฉันเข้าใจ URL ที่ได้รับการจัดทำดัชนีโดยเครื่องมือค้นหา ฉันไม่เข้าใจสิ่งที่เกี่ยวข้องกับ GET ฉันหมายความว่าไม่ใช่แค่ URL ใช่ไหม
ฮันนี่

1
@Honey Search engines ติดตามลิงค์ ลิงค์ทำการร้องขอ เครื่องมือค้นหาไม่ส่งแบบฟอร์ม (ถ้าเป็นเช่นนั้นคุณจะเห็น Google ลงชื่อสมัครใช้บัญชีในเว็บไซต์ของคุณทุกสองสามวัน) ดังนั้นจึงไม่ส่งคำขอ POST
ceejayoz

7

ใช้ GET เมื่อคุณต้องการให้ URL แสดงสถานะของหน้า สิ่งนี้มีประโยชน์สำหรับการดูหน้าเว็บที่สร้างขึ้นแบบไดนามิกเช่นที่เห็นในที่นี้ ควรใช้ POST ในแบบฟอร์มเพื่อส่งข้อมูลเช่นเมื่อฉันคลิกปุ่ม "โพสต์คำตอบของคุณ" นอกจากนี้ยังสร้าง URL ที่สะอาดขึ้นเนื่องจากจะไม่สร้างสตริงพารามิเตอร์หลังพา ธ


6

เนื่องจาก GETs เป็น URL ล้วนๆเว็บเบราว์เซอร์เหล่านี้จึงสามารถแคชได้และอาจใช้ในสิ่งต่าง ๆ เช่นรูปภาพที่สร้างขึ้นอย่างสม่ำเสมอ (ตั้งเวลาหมดอายุ)

ตัวอย่างหนึ่งจากหน้า gravatar: http://www.gravatar.com/avatar/4c3be63a4c2f539b013787725dfce802?d=monsterid

GET อาจมีประสิทธิภาพที่ดีขึ้นเล็กน้อยเว็บเซิร์ฟเวอร์บางตัวเขียนเนื้อหา POST ไปยังไฟล์ชั่วคราวก่อนที่จะเรียกใช้ตัวจัดการ

สิ่งที่ต้องพิจารณาอีกประการหนึ่งคือการ จำกัด ขนาด GETs ถูกต่อยอดด้วยขนาดของ URL 1024 ไบต์ตามมาตรฐานแม้ว่าเบราว์เซอร์อาจรองรับมากกว่านี้

ถ่ายโอนข้อมูลมากกว่าที่ควรใช้ POST เพื่อให้เข้ากันได้กับเบราว์เซอร์ที่ดีขึ้น

แม้จะน้อยกว่าขีด จำกัด นั้นก็เป็นปัญหาตามที่ผู้โพสต์คนอื่นเขียนไว้สิ่งใดก็ตามใน URL อาจปรากฏในส่วนอื่น ๆ ของ UI ของเบราว์เซอร์เช่นประวัติ


4

ไม่มีสิ่งใดที่คุณไม่สามารถทำต่อได้ ประเด็นก็คือคุณไม่ควรแก้ไขสถานะเซิร์ฟเวอร์ใน HTTP GET HTTP พร็อกซีสันนิษฐานว่าเนื่องจาก HTTP GET ไม่ได้แก้ไขสถานะดังนั้นผู้ใช้จะเรียกใช้ HTTP GET เพียงครั้งเดียวหรือ 1,000 ครั้งทำให้ไม่มีความแตกต่าง การใช้ข้อมูลนี้พวกเขาคิดว่าปลอดภัยที่จะส่งคืนเวอร์ชันแคช HTTP แรกของ GET หากคุณทำลายข้อกำหนดของ HTTP คุณอาจเสี่ยงต่อการแบ่งไคลเอนต์ HTTP และพร็อกซีในรูปแบบเดิม อย่าทำมัน :)


ไม่ใช่แค่เบราว์เซอร์ที่เชื่อว่า GET นั้นปลอดภัยและ idempotent: สไปเดอร์ของเครื่องมือค้นหาและเบราว์เซอร์ดึงข้อมูลล่วงหน้า (เช่นเร็วขึ้น) ด้วยเช่นกัน
Frank Farmer

@gili ในที่สุดคนที่มีคำตอบที่ถูกต้อง ฉันประหลาดใจจริง ๆ ว่ามีกี่คนที่ทำสิ่งนี้ผิด ยกนิ้วให้!
lubos hasko

4

สิ่งนี้เข้าไปในแนวคิดของ REST และวิธีที่เว็บมีจุดประสงค์ในการใช้งาน มีพอดคาสต์ที่ยอดเยี่ยมในวิทยุวิศวกรรมซอฟต์แวร์ที่ให้การพูดคุยเชิงลึกเกี่ยวกับการใช้ Get และ Post

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

การโพสต์ควรจะใช้ (อย่างน้อยโดยสถาปัตยกรรม REST ซึ่งเป็นเว็บตาม kinda) สำหรับการผลักดันข้อมูลไปยังเซิร์ฟเวอร์ / บอกเซิร์ฟเวอร์เพื่อดำเนินการ ตัวอย่างเช่น: อัปเดตข้อมูลนี้สร้างระเบียนนี้


"มีพอดคาสต์ที่ยอดเยี่ยมในวิทยุวิศวกรรมซอฟต์แวร์ที่ให้การพูดคุยเชิงลึกเกี่ยวกับการใช้งาน Get and Post" มันอยู่ที่ไหน?
yeeen

ฉันได้เพิ่มลิงค์ไปแล้ว
kemiller2002

นี่คือการเชื่อมโยง: se-radio.net/2008/05/episode-98-stefan-tilkov-on-restฉันแก้ไขลิงค์ด้านบนแม้ว่าฉันจะไม่มีสิทธิ์แก้ไขและต้องได้รับการตรวจสอบโดยผู้อื่นเป็นต้น
MrBoJangles

สมมติว่าฉันมีจุดปลายที่ยอมรับไฟล์เป็นอินพุตทำการประมวลผลบางอย่างบนไฟล์ (ตัวอย่าง - แยกข้อมูลตาม regex) และส่งคืนข้อมูล JSON จากนั้นฉันสามารถใช้คำขอ GET เพื่ออัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ หรือฉันควรใช้คำขอ POST
ตัวแปร

4

1.3 รายการตรวจสอบด่วนสำหรับการเลือก HTTP GETหรือPOST

ใช้ GET หาก:

    The interaction is more like a question (i.e., it is a safe operation such as a query, read operation, or lookup).

ใช้ POST หาก:

    The interaction is more like an order, or
    The interaction changes the state of the resource in a way that the user would perceive (e.g., a subscription to a service), or
    The user be held accountable for the results of the interaction.

แหล่ง


3

ฉันไม่เห็นปัญหาในการใช้รับ แต่ฉันใช้มันสำหรับสิ่งง่าย ๆ ที่มันเหมาะสมที่จะเก็บสิ่งต่าง ๆ ในสตริงการสืบค้น

การใช้เพื่ออัปเดตสถานะ - เช่นเดียวกับ GET ของdelete.php?id=5เพื่อลบหน้า - มีความเสี่ยงมาก ผู้คนพบว่าเมื่อตัวเร่งความเร็วเว็บของ Google เริ่มดึง URL ล่วงหน้าบนหน้าเว็บมันจะไปถึงลิงก์ 'ลบ' ทั้งหมดและลบข้อมูลของผู้คนออกไป สิ่งเดียวกันสามารถเกิดขึ้นได้กับสไปเดอร์ของเครื่องมือค้นหา


3

POST สามารถย้ายข้อมูลขนาดใหญ่ได้ในขณะที่ GET ไม่สามารถทำได้

แต่โดยทั่วไปจะไม่เกี่ยวกับการย่อของ GET แต่เป็นการประชุมหากคุณต้องการให้เว็บไซต์ / เว็บแอปของคุณทำงานได้ดี

ดูhttp://www.w3.org/2001/tag/doc/whenToUseGet.html


3

จากRFC 2616 :

9.3 GET
วิธี GET หมายถึงการดึงข้อมูลใด ๆ (ในรูปแบบของนิติบุคคล) ที่ระบุโดย Request-URI หาก Request-URI อ้างถึงกระบวนการผลิตข้อมูลมันเป็นข้อมูลที่ผลิตซึ่งจะถูกส่งคืนเป็นเอนทิตีในการตอบกลับไม่ใช่ข้อความต้นฉบับของกระบวนการยกเว้นว่าข้อความนั้นเป็นผลลัพธ์ของกระบวนการ


9.5 POST
วิธี POST ใช้เพื่อขอให้เซิร์ฟเวอร์ต้นทางยอมรับเอนทิตีที่อยู่ในคำขอเป็นผู้ใต้บังคับบัญชาใหม่ของทรัพยากรที่ระบุโดย Request-URI ใน Request-Line POST ได้รับการออกแบบมาเพื่อให้วิธีการแบบเดียวกันครอบคลุมฟังก์ชั่นต่อไปนี้:

  • คำอธิบายประกอบของทรัพยากรที่มีอยู่;
  • การโพสต์ข้อความไปยังกระดานข่าวกลุ่มข่าวสารรายชื่อผู้รับจดหมายหรือกลุ่มบทความที่คล้ายกัน
  • การจัดเตรียมบล็อกข้อมูลเช่นผลลัพธ์ของการส่งแบบฟอร์มไปยังกระบวนการจัดการข้อมูล
  • การขยายฐานข้อมูลผ่านการดำเนินการผนวก

ฟังก์ชั่นที่เกิดขึ้นจริงดำเนินการโดยวิธีการ POST จะถูกกำหนดโดยเซิร์ฟเวอร์และมักจะขึ้นอยู่กับ Request-URI เอนทิตีที่ถูกโพสต์นั้นเป็นสังกัดอยู่ใน URI นั้นในลักษณะเดียวกับที่ไฟล์นั้นถูกส่งไปยังไดเรกทอรีที่มีอยู่บทความข่าวจะถูกส่งไปยังกลุ่มข่าวสารที่โพสต์ไว้หรือบันทึกเป็นสังกัดในฐานข้อมูล

การกระทำที่ดำเนินการโดยวิธี POST อาจไม่ส่งผลให้เกิดทรัพยากรที่สามารถระบุได้โดย URI ในกรณีนี้ 200 (OK) หรือ 204 (ไม่มีเนื้อหา) เป็นสถานะการตอบสนองที่เหมาะสมขึ้นอยู่กับว่าการตอบสนองนั้นมีเอนทิตีที่อธิบายผลลัพธ์หรือไม่


2

ฉันใช้ POST เมื่อฉันไม่ต้องการให้คนอื่นเห็น QueryString หรือเมื่อ QueryString ใหญ่ขึ้น และต้องมี POST สำหรับการอัปโหลดไฟล์

ฉันไม่เห็นปัญหาในการใช้ GET แต่ฉันใช้มันสำหรับสิ่งง่าย ๆ ที่เหมาะสมกับการใช้ QueryString

การใช้ GET จะอนุญาตให้เชื่อมโยงไปยังหน้าใดหน้าหนึ่งโดยเฉพาะซึ่ง POST จะไม่ทำงาน


เหตุใดเราไม่สามารถใช้ GET เพื่ออัปโหลดไฟล์ได้
ตัวแปร

1

จุดประสงค์ดั้งเดิมคือใช้ GET เพื่อรับข้อมูลกลับมาและ POST จะเป็นอะไรก็ได้ กฎง่ายๆที่ฉันใช้คือถ้าฉันส่งอะไรกลับไปที่เซิร์ฟเวอร์ฉันใช้ POST ถ้าฉันแค่เรียก URL เพื่อรับข้อมูลฉันใช้ GET


1

อ่านบทความเกี่ยวกับ HTTP ในวิกิพีเดีย มันจะอธิบายว่าโปรโตคอลคืออะไรและทำอะไร:

GET

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

และ

POST ส่งข้อมูลที่จะประมวลผล (เช่นจากฟอร์ม HTML) ไปยังทรัพยากรที่ระบุ ข้อมูลจะรวมอยู่ในเนื้อหาของคำขอ ซึ่งอาจส่งผลให้เกิดการสร้างทรัพยากรใหม่หรือการปรับปรุงทรัพยากรที่มีอยู่หรือทั้งสองอย่าง

W3C มีเอกสารชื่อURIs, Addressability และการใช้ HTTP GET และ POSTที่อธิบายว่าจะใช้เมื่อใด การอ้างอิง

1.3 รายการตรวจสอบด่วนสำหรับการเลือก HTTP GET หรือ POST

  • ใช้ GET หาก:
    • การโต้ตอบนั้นเป็นเหมือนคำถาม (นั่นคือเป็นการทำงานที่ปลอดภัยเช่นแบบสอบถามการดำเนินการอ่านหรือการค้นหา)

และ

  • ใช้ POST หาก:
    • การโต้ตอบเป็นเหมือนคำสั่งซื้อหรือ
    • การโต้ตอบเปลี่ยนสถานะของทรัพยากรในลักษณะที่ผู้ใช้จะรับรู้ (เช่นการสมัครใช้บริการ) หรือ o ผู้ใช้ต้องรับผิดชอบต่อผลของการโต้ตอบ

อย่างไรก็ตามก่อนการตัดสินใจขั้นสุดท้ายเพื่อใช้ HTTP GET หรือ POST โปรดพิจารณาข้อควรพิจารณาสำหรับข้อมูลที่ละเอียดอ่อนและข้อควรพิจารณาในทางปฏิบัติ

ตัวอย่างการปฏิบัติจะเป็นเมื่อใดก็ตามที่คุณส่งแบบฟอร์ม HTML คุณระบุว่าโพสต์หรือรับสำหรับการกระทำของแบบฟอร์ม PHP จะเติม $ _GET และ $ _POST ตามลำดับ


1

ใน PHP POSTขีด จำกัด php.iniข้อมูลมักจะกำหนดโดยคุณ GETถูก จำกัด โดยการตั้งค่าเซิร์ฟเวอร์ / เบราว์เซอร์ที่ฉันเชื่อ - โดยปกติประมาณ255ไบต์


1

จากw3schools.com :

HTTP คืออะไร

Hypertext Transfer Protocol (HTTP) ถูกออกแบบมาเพื่อเปิดใช้งานการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์

HTTP ทำงานเป็นโปรโตคอลตอบกลับคำขอระหว่างไคลเอนต์และเซิร์ฟเวอร์

เว็บเบราว์เซอร์อาจเป็นไคลเอนต์และแอปพลิเคชันบนคอมพิวเตอร์ที่โฮสต์เว็บไซต์อาจเป็นเซิร์ฟเวอร์

ตัวอย่าง: ไคลเอนต์ (เบราว์เซอร์) ส่งการร้องขอ HTTP ไปยังเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์จะส่งคืนการตอบกลับไปยังลูกค้า การตอบกลับมีข้อมูลสถานะเกี่ยวกับคำขอและอาจมีเนื้อหาที่ร้องขอ

วิธีการร้องขอ HTTP สองวิธี: GET และ POST

สองวิธีที่ใช้กันทั่วไปสำหรับการร้องขอการตอบสนองระหว่างไคลเอนต์และเซิร์ฟเวอร์คือ: GET และ POST

GET - ร้องขอข้อมูลจากทรัพยากรที่ระบุ POST - ส่งข้อมูลที่จะดำเนินการกับทรัพยากรที่ระบุ

ที่นี่เราแยกแยะความแตกต่างที่สำคัญ:

ป้อนคำอธิบายรูปภาพที่นี่


1
มันจะดีกว่ามากสำหรับผู้ค้นหาและผู้อ่านเพื่อป้อนเนื้อหาของภาพลงในคำตอบ นอกจากนี้ส่วนแรกของคำตอบไม่ได้ช่วยตอบคำถามจริงๆ
Dave Schweisguth

คัดลอกวางจากที่นี่ - คุณต้องอ้างอิงแหล่งข้อมูลของคุณอย่างถูกต้องและใบอนุญาตแหล่งที่มาต้องอนุญาตให้นำมาใช้ซ้ำซึ่งฉันไม่คิดว่า w3schools ทำ นอกจากนั้นคุณคิดว่านี่เป็นการเพิ่มสิ่งที่ไม่ได้กล่าวถึงในอีก 25 คำตอบหรือไม่?
Benjamin W.

1

รุ่นที่เรียบง่ายของ POST GET PUT DELETE

  • ใช้ GET - เมื่อคุณต้องการรับทรัพยากรใด ๆ เช่นรายการข้อมูลตามรหัสหรือชื่อใด ๆ
  • ใช้ POST - เมื่อคุณต้องการส่งข้อมูลใด ๆ ไปยังเซิร์ฟเวอร์ โปรดทราบ POST เป็นการดำเนินการที่มีน้ำหนักมากเพราะสำหรับการอัพเดทเราควรใช้ PUT แทน POST ภายใน POST จะสร้างทรัพยากรใหม่
  • ใช้ PUT - เมื่อคุณ

4
"ใช้ PUT - เมื่อคุณ"ประโยคที่เหลืออยู่ที่ไหน
ปาง

มันยอดเยี่ยมมากที่มีคนชอบกระสุนสองนัดแรกของคำตอบนี้มากจนเห็นได้ชัดว่าพวกเขาสนับสนุนมันด้วยกระสุนนัดสุดท้ายฮ่าฮ่า: '-)
pooley1994

0

สิ่งสำคัญอย่างหนึ่งคือทุกสิ่งที่คุณส่งGETไปจะถูกเปิดเผยผ่าน URL ประการที่สองที่ Ceejayoz พูดมีขีด จำกัด สำหรับอักขระสำหรับ URL


0

ข้อแตกต่างคือ POST โดยทั่วไปต้องการการดำเนินการ HTTP สองอย่างในขณะที่ GET ต้องการเพียงหนึ่ง

แก้ไข: ฉันควรชี้แจง - สำหรับรูปแบบการเขียนโปรแกรมทั่วไป โดยทั่วไปการตอบสนองต่อ POST ที่มีเว็บเพจ HTML ตรงขึ้นเป็นการออกแบบที่น่าสงสัยด้วยเหตุผลหลายประการซึ่งหนึ่งในนั้นน่ารำคาญ "คุณต้องส่งแบบฟอร์มนี้อีกครั้งคุณต้องการทำเช่นนั้นหรือไม่?" เมื่อกดปุ่มย้อนกลับ


2
POST ไม่ต้องการการดำเนินการ 2 http
Billy ONeal

3
post-redirect-get ต้องการการดำเนินงาน 2 อย่าง: en.wikipedia.org/wiki/Post/Redirect/Get
cherouvim

1
POST อาจต้องใช้การเดินทางไปกลับรอบ 2 ไปยังเซิร์ฟเวอร์ - รูปแบบทั่วไปคือการ POST ด้วยexpect: 100-continueส่วนหัวแล้วส่งข้อมูลเมื่อเซิร์ฟเวอร์ตอบกลับด้วย a 100 CONTINUEเท่านั้น
Frank Farmer

บทความที่ดี cherouvim ฉันไม่เคยรู้รูปแบบที่มีชื่อ
Plynx

@cherouvim: รับการเปลี่ยนเส้นทางโพสต์ทำ แต่โพสต์ธรรมดาไม่ได้ คุณสามารถเพียงแค่ได้รับการเปลี่ยนเส้นทางรับกับผลลัพธ์เดียวกัน ไม่มีส่วนเกี่ยวข้องกับโปรโตคอลที่ฟอร์มของคุณใช้สำหรับการส่ง
Billy ONeal

0

ตามที่ผู้อื่นตอบมีข้อ จำกัด เกี่ยวกับขนาดของ URL ที่มีการรับและสามารถส่งไฟล์พร้อมโพสต์เท่านั้น

ฉันต้องการเพิ่มสิ่งนั้นสามารถเพิ่มสิ่งต่าง ๆ ในฐานข้อมูลด้วยการรับและดำเนินการกับโพสต์ เมื่อสคริปต์ได้รับโพสต์หรือรับก็สามารถทำสิ่งที่ผู้เขียนต้องการที่จะทำ ฉันเชื่อว่าการขาดความเข้าใจนั้นมาจากถ้อยคำในหนังสือที่เลือกหรือวิธีที่คุณอ่าน

ผู้เขียนสคริปต์ควรใช้โพสต์เพื่อเปลี่ยนฐานข้อมูลและใช้รับเฉพาะสำหรับการดึงข้อมูล

ภาษาสคริปต์มีวิธีการมากมายในการเข้าถึงการร้องขอ ตัวอย่างเช่น PHP อนุญาตให้ใช้$_REQUESTเพื่อดึงโพสต์หรือรับ หนึ่งควรหลีกเลี่ยงปัญหานี้ในความโปรดปรานของเฉพาะเจาะจงมากขึ้นหรือ$_GET$_POST

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


0

Gorgapor, ยังมักจะใช้mod_rewrite GETมันช่วยให้การแปล URL ที่เป็นมิตรใน URL เป็นGETสตริงการสืบค้น


-1

ข้อมูล HTTP โพสต์ไม่มีข้อ จำกัด ตามปริมาณข้อมูลที่เบราว์เซอร์ต่าง ๆ มีข้อ จำกัด ที่แตกต่างกันสำหรับ GET RFC 2068 ระบุว่า:

เซิร์ฟเวอร์ควรระมัดระวังเกี่ยวกับความยาวของ URI ที่สูงกว่า 255 ไบต์เนื่องจากไคลเอนต์หรือพร็อกซีรุ่นเก่าบางรุ่นอาจไม่รองรับความยาวเหล่านี้อย่างเหมาะสม

คุณควรสร้าง HTTP ที่ถูกต้องสำหรับสิ่งที่พวกเขาใช้ HTTP GET ไม่ควรมีผลข้างเคียงและสามารถรีเฟรชและจัดเก็บได้อย่างปลอดภัยโดย HTTP Proxies ฯลฯ

HTTP POST's ถูกใช้เมื่อคุณต้องการส่งข้อมูลกับทรัพยากร url

ตัวอย่างทั่วไปสำหรับการใช้ HTTP GET นั้นอยู่ในการค้นหาเช่น Search? Query = แบบสอบถาม + ของฉันตัวอย่างทั่วไปสำหรับการใช้ HTTP POST กำลังส่งข้อเสนอแนะไปยังแบบฟอร์มออนไลน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.