คำถามติดแท็ก http

HyperText Transfer Protocol - ระบบที่เป็นข้อความสำหรับแสดงคำขอเว็บและตอบกลับ

5
RESTful API ฉันควรส่งคืนวัตถุที่สร้าง / อัพเดทหรือไม่
ฉันกำลังออกแบบเว็บเซอร์วิส RESTful โดยใช้ WebApi และสงสัยว่าการตอบสนอง HTTP และร่างกายการตอบสนองที่จะกลับมาเมื่อมีการปรับปรุง / สร้างวัตถุ ตัวอย่างเช่นฉันสามารถใช้วิธีการโพสต์เพื่อส่ง JSON บางส่วนไปยังบริการเว็บแล้วสร้างวัตถุ เป็นวิธีที่ดีที่สุดหรือไม่ที่จะตั้งค่าสถานะ HTTP เป็นสร้าง (201) หรือตกลง (200) และเพียงแค่ส่งคืนข้อความเช่น "เพิ่มพนักงานใหม่" หรือส่งคืนวัตถุที่ถูกส่งมาตั้งแต่แรก? เช่นเดียวกับวิธี PUT สถานะ HTTP ใดดีที่สุดที่จะใช้และฉันจำเป็นต้องส่งคืนวัตถุที่สร้างขึ้นหรือเพียงแค่ข้อความ พิจารณาข้อเท็จจริงที่ว่าผู้ใช้รู้ว่าวัตถุใดที่พวกเขากำลังพยายามสร้าง / อัปเดตอยู่ดี ความคิดใด ๆ ตัวอย่าง: เพิ่มพนักงานใหม่: POST /api/employee HTTP/1.1 Host: localhost:8000 Content-Type: application/json { "Employee": { "Name" : "Joe Bloggs", "Department" : "Finance" …
35 rest  http 

3
มีปัญหากับการใช้วิธี HTTP แบบกำหนดเองหรือไม่?
เรามี URL ในรูปแบบดังต่อไปนี้ / อินสแตนซ์ / {instanceType} / {} InstanceID คุณสามารถเรียกมันได้ด้วยวิธี HTTP มาตรฐาน: POST, GET, DELETE, PUT อย่างไรก็ตามมีการกระทำอีกสองสามอย่างที่เราดำเนินการเช่น "บันทึกเป็นแบบร่าง" หรือ "Curate" เราคิดว่าเราสามารถใช้วิธี HTTP แบบกำหนดเองเช่น: DRAFT, VALIDATE, CURATE ฉันคิดว่านี่เป็นสิ่งที่ยอมรับได้เพราะมาตรฐานบอกว่า "ชุดวิธีการทั่วไปสำหรับ HTTP / 1.1 ถูกกำหนดไว้ด้านล่างแม้ว่าชุดนี้สามารถขยายได้ แต่วิธีการเพิ่มเติมไม่สามารถสันนิษฐานได้ว่าจะใช้ความหมายเดียวกันสำหรับไคลเอนต์และเซิร์ฟเวอร์แยกกัน" และเครื่องมือเช่น WebDav สร้างส่วนขยายของตัวเอง มีปัญหาที่บางคนใช้กับวิธีการที่กำหนดเองหรือไม่? ฉันกำลังคิดถึงพร็อกซีเซิร์ฟเวอร์และไฟร์วอลล์ แต่ยินดีต้อนรับประเด็นอื่น ๆ ฉันควรอยู่อย่างปลอดภัยและมีพารามิเตอร์ URL เช่น action = validate | curate | …
34 rest  http 

6
HTTP API ควรส่งคืนเนื้อหาเสมอหรือไม่
มีมาตรฐานบางอย่างเกี่ยวกับการตอบกลับ HTTP API หรือไม่ หลังจากอ่านหัวข้อสนทนานี้ฉันเริ่มสงสัย เรากำลังพัฒนา HTTP JSON API สาธารณะของเราในที่ทำงานของฉันและเราจะไม่ส่งคืนสิ่งใดเมื่อไม่จำเป็นอย่างเคร่งครัด (เช่น PUT to / resource / {id} เท่านั้นส่งคืน 200 เมื่อตกลงหรือรหัส 4XX หรือ 5XX ที่เกี่ยวข้อง แต่ไม่ ร่างกาย JSON) เราควรคืนค่าตัวแบบทั่วไป{"success":true}เช่นที่พวกเขาพูดคุยเกี่ยวกับลิงก์ข้างต้นหรือไม่มันก็โอเคที่จะคืนค่าส่วน "โมฆะ" และจัดการทุกอย่างด้วยรหัสตอบกลับ http?
33 rest  api-design  http 

5
ทำไมเราไม่สามารถใช้ที่อยู่ IP แทนคุกกี้ในการระบุลูกค้าใน servlets
ฉันรู้ว่าเรามีข้อได้เปรียบพิเศษในการใช้คุกกี้ผ่านที่อยู่ IP แต่คำถามของฉันคือเหตุใดคอนเทนเนอร์ไม่สามารถจดจำที่อยู่ IP ของลูกค้าในการระบุลูกค้าเมื่อเขาเยี่ยมชมเว็บไซต์ของเขาอีกครั้ง เป็นไปได้ไหมที่คอนเทนเนอร์จะจดจำลูกค้าด้วยความช่วยเหลือของที่อยู่ IP?

6
สิ่งที่จะเรียก HTTP API ที่ไม่สงบ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว คุณจะเรียก API ที่ใช้ HTTP ใช้ URI เพื่อตั้งชื่อทรัพยากรและกริยา HTTP (PUT, POST, DELETE, GET ... ) เพื่อจัดการทรัพยากรเหล่านั้นอย่างไร ตามการร้องเรียนของ Roy Fieldingไม่ใช่การพักเนื่องจากไม่มีไฮเปอร์มีเดีย ภายในทีมของฉันทุกคนเรียกมันว่า "REST API" ฉันเรียกมันว่า "REST-like" แต่มันไม่ได้อธิบายและความหมายของมันนั้นคลุมเครือ ฉันค่อนข้างสับสนเกี่ยวกับเรื่องนี้เนื่องจากมีความขัดแย้งอย่างมากเกี่ยวกับ REST ฉันไม่ต้องการมีส่วนร่วมในสงครามไฟ แต่เพียงใช้คำที่ถูกต้อง
24 terminology  rest  api  http 

2
ฉันควรสร้างรหัสสถานะ HTTP ของตัวเองหรือไม่ (a Twitter Twitter 420: Enhance Calm Your)
คำถามนี้ถูกโยกย้ายจาก Server Fault เนื่องจากสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 6 ปีที่แล้ว ฉันกำลังใช้ HTTP API เป็นครั้งแรก ฉันใช้เวลาไปกับการดูหน้า Wikipedia สำหรับรหัสสถานะ HTTP เพราะฉันมุ่งมั่นที่จะใช้รหัสที่ถูกต้องสำหรับสถานการณ์ที่เหมาะสม รายชื่อในหน้านั้นเป็นรหัสที่มีหมายเลข 420 ซึ่งเป็นรหัสที่กำหนดเองซึ่ง Twitter ใช้เพื่อ จำกัด อัตรา มีรหัสสำหรับการ จำกัด อัตราอยู่แล้ว มันคือ 429 สิ่งนี้ทำให้ฉันสงสัยว่าทำไมพวกเขาถึงกำหนดเองเมื่อมีกรณีใช้งานอยู่แล้ว นั่นน่ารักใช่มั้ย และหากเป็นเช่นนั้นสถานการณ์ใดบ้างที่จะทำให้ยอมรับรหัสสถานะที่แตกต่างออกไปและสิ่งใดหากลูกค้ามีปัญหาใด ๆ ฉันอ่านที่ไหนสักแห่งที่ Mozilla ไม่ได้ใช้การ418: I’m a teapotตอบสนองตลกซึ่งทำให้ฉันคิดว่าลูกค้าเลือกรหัสสถานะที่พวกเขาใช้ ถ้านั่นเป็นเรื่องจริงฉันก็นึกภาพเล็ก ๆ น้อย ๆ ของ Twitter ที่ทำให้รหัสสงบของคุณเป็นปัญหา นอกจากว่าฉันเข้าใจผิดและเราสามารถใส่หมายเลขรหัสใดก็ได้เพื่อหมายถึงสิ่งที่เราชอบและมีเพียงการประชุมที่บอกว่าไม่พบ …
24 api-design  http 

5
เว็บเซิร์ฟเวอร์บังคับใช้นโยบายกำเนิดเดียวกันได้อย่างไร
ฉันดำน้ำลึกลงไปในการพัฒนา RESTful API และทำงานร่วมกับกรอบที่แตกต่างกันสองสามอย่างเพื่อบรรลุเป้าหมายนี้ แน่นอนว่าฉันใช้นโยบายที่มาจากเดิมและตอนนี้ฉันสงสัยว่าเว็บเซิร์ฟเวอร์ (แทนที่จะเป็นเว็บเบราว์เซอร์) บังคับใช้อย่างไร จากสิ่งที่ฉันเข้าใจการบังคับใช้บางอย่างดูเหมือนจะเกิดขึ้นที่ส่วนท้ายของเบราว์เซอร์ (เช่นการเคารพส่วนหัว Access-Control-Allow-Origin - ที่ได้รับจากเซิร์ฟเวอร์) แต่แล้วเซิร์ฟเวอร์ล่ะ ตัวอย่างเช่นสมมติว่าเว็บเซิร์ฟเวอร์โฮสต์ Javascript เว็บแอปที่เข้าถึง API และโฮสต์บนเซิร์ฟเวอร์นั้น ฉันคิดว่าเซิร์ฟเวอร์จะบังคับใช้นโยบายกำเนิดเดียวกัน --- เพื่อให้เฉพาะจาวาสคริปต์ที่โฮสต์บนเซิร์ฟเวอร์นั้นจะได้รับอนุญาตให้เข้าถึง API นี่จะป้องกันไม่ให้คนอื่นเขียนไคลเอนต์จาวาสคริปต์สำหรับ API นั้นและโฮสต์ไว้ในไซต์อื่นใช่ไหม ดังนั้นเว็บเซิร์ฟเวอร์จะสามารถหยุดไคลเอ็นต์ที่เป็นอันตรายที่พยายามส่งคำขอ AJAX ไปยังจุดสิ้นสุด API ของตนในขณะที่อ้างว่าใช้จาวาสคริปต์ที่มาจากเว็บเซิร์ฟเวอร์เดียวกันได้อย่างไร เซิร์ฟเวอร์ยอดนิยม (Apache, nginx) ป้องกันการโจมตีแบบนี้ได้อย่างไร? หรือความเข้าใจของฉันในเรื่องนี้อย่างใดปิดเครื่องหมาย? หรือมีการบังคับใช้นโยบายข้ามแหล่งที่มาเฉพาะที่ส่วนท้ายของไคลเอ็นต์หรือไม่

3
รหัสสถานะ HTTP ที่แนะนำสำหรับการตอบสนอง“ เกินขีด จำกัด แผน”
ฉันออกแบบ REST API สำหรับโครงการที่ผู้ใช้มักจะอยู่ใน "แผน" หนึ่งในหลาย ๆ แผน - แต่ละแผนกำหนดข้อ จำกัด ของทรัพยากรบางอย่างเช่นจำนวนผู้ใช้สูงสุดที่บัญชีอาจมีหรือจำนวนข้อมูลสูงสุดที่พวกเขาอาจอัปโหลด เมื่อถึงขีด จำกัด เหล่านี้ผู้ใช้สามารถอัปเกรดแผนของพวกเขา (จ่ายเป็นหลัก) เพื่อรับทรัพยากรเพิ่มเติม ฉันต้องการส่งคืนรหัสสถานะพิเศษที่ระบุสถานการณ์ที่ไม่สามารถดำเนินการได้เนื่องจากข้อ จำกัด ของทรัพยากรบัญชีและการอัปเกรดแผนจะแก้ไขปัญหานี้ - ตัวอย่างเช่นหากผู้ใช้ใช้ 100% ของความจุในการจัดเก็บและลองอัปโหลดไฟล์เพิ่มเติม พวกเขาจะได้รับคำตอบนี้ ผู้สมัครคือ IMHO: 403 Forbidden - อย่างไรก็ตามฉันต้องการแยกความแตกต่างระหว่างกรณีนี้และกรณีอื่น ๆ ที่ผู้ใช้ขาดสิทธิ์ในการดำเนินการนี้ 401 Unauthorized - ไม่ใช่ความคิดที่ดีเราใช้มันเพื่อตรวจสอบปัญหาที่เกี่ยวข้อง 402 Payment Required - ทำให้รู้สึก แต่ฉันกังวลเกี่ยวกับการใช้รหัสสถานะที่ไม่ได้มาตรฐาน แต่สงวนไว้ บางสิ่งที่เป็นมาตรฐานน้อยลงอย่าง423 Lockedที่ไม่น่าเป็นไปได้เราจะใช้มันเพื่อสิ่งอื่นในอนาคต ตัวเลือกอื่นคือไปกับสิ่งที่มาตรฐานมากเช่น403แต่ระบุเฉพาะข้อผิดพลาดในเนื้อหาการตอบสนอง ฉันสงสัยว่าวิธีการใดที่คุณเชื่อว่า (ก) จะทำงานได้ดีที่สุดในระยะยาวและ …
24 rest  api-design  http 

5
ให้ URL ที่เป็นมิตรกับเว็บไซต์และความเป็นจริงของรหัสฐานข้อมูล
เรามีฐานข้อมูลทรัพยากรไม่ว่าจะเป็นผลิตภัณฑ์โพสต์บล็อกหรืออะไร เราจำเป็นต้องออกแบบชุดรูปแบบ URL เพื่อระบุที่อยู่สำหรับเว็บไซต์สาธารณะ นี่คือสองตัวอย่างที่ผูก ID ฐานข้อมูล: https://www.youtube.com/watch?v=7FPS6llqhXw http://www.amazon.co.uk/gp/product/B000NHOMSQ นี่คือตัวอย่างที่เป็นมิตร: http://en.wikipedia.org/wiki/LED_circuit (เหลือบเล็ก ๆ น้อย ๆ ในชีวิตการท่องของฉันมี) ฉันชอบ URL ที่จดจำง่ายเนื่องจากคุณมีความคิดเกี่ยวกับสิ่งที่อยู่ท้าย URL เมื่อคุณเลื่อนหรือดูในอีเมลหรือเอกสาร ดีกว่าสำหรับ SEO หรือเคยเป็นมาก่อน จะเกิดอะไรขึ้นเมื่อเปลี่ยนชื่อเอกสารหรือผลิตภัณฑ์ อาจเป็นเพราะมันเปลี่ยนไป (Wiki อาจไม่เปลี่ยนแปลง แต่ทรัพยากรของเราสามารถทำได้) หรือเนื่องจากพิมพ์ผิดใช่ไหม ทรัพยากรของเรานั้นมีทั้งเทคนิคคำพูดยาว ๆ และข้อผิดพลาด นอกจากนี้เรายังมี ID ฐานข้อมูลซึ่งเป็นตัวเลข ลองดูแนวคิดสำหรับที่อยู่ของวิดีโอโดยใช้ร้านเช่าที่ให้เช่า: http://vidsyeah.com/video/sliding-doors/287171 ID นั้นชัดเจนและถูกใช้ในการค้นหา DB ละเอียด. บิตบานเลื่อนไม่ซ้ำกันและเพิ่งสร้างจากชื่อวิดีโอมันสามารถตรวจสอบได้บน GET ดังนั้นหากเข้าประตูร่อนและไม่ตรงกับสิ่งที่อยู่ใน doc 287171 จริง ๆ แล้วมันจะตอบสนอง …

2
ระดับการอนุญาตของผู้ใช้ใน RESTful API
สมมติว่าฉันมี บริษัท ที่จัดอันดับแมวที่น่ารักที่สุดในอินเทอร์เน็ต ฉันเสนอทรัพยากรที่/cats/ให้แมวที่น่ารักและน่ารักคนล่าสุด ผู้ใช้สามารถได้รับแมว 3 อันดับแรกหากพวกเขาไม่ได้ชำระเงินทั้งหมดหรือลงทะเบียน แมว 10 อันดับแรกถ้าพวกเขาจ่าย 337 ดอลลาร์และเข้าสู่ระบบและแมว 100 อันดับแรกถ้าพวกเขาจ่ายเงิน 1,337 ดอลลาร์และเข้าสู่ระบบฉันมี 'ตัวระบุผู้ใช้' เมื่อทำการร้องขอ ในระยะสั้นผู้บริโภค/cats/จะได้รับจำนวนที่แตกต่างกันของแมวอยู่บนพื้นฐานของพวกเขาใช้การจัดอันดับ ' ฉันมีตัวระบุผู้ใช้ในส่วนสิ้นเปลือง แต่ฉันไม่มีระดับตัวแทนผู้ใช้อย่างชัดเจนในส่วนสิ้นเปลือง ฉันต้องการแจ้งให้ผู้ใช้ทราบว่าพวกเขาสามารถอัพเกรดการสมัครสมาชิกเมื่อทำการร้องขอ นั่นคือฉันต้องการที่จะแยกแยะระหว่าง3 แมวตั้งแต่ผมเพียง แต่นำเสนอ 3 แมวและ3 แมวเนื่องจากว่าสิ่งที่ระดับผู้ใช้ที่ได้รับอนุญาต อะไรคือแนวปฏิบัติที่ดีที่สุดสำหรับการ จำกัด ทรัพยากรเนื่องจากผู้บริโภคมีสิทธิพิเศษไม่เพียงพอและ จำกัด เนื่องจากเป็นสิ่งที่ผู้บริโภคมี ลูกค้าจะรู้ได้อย่างไรว่าพวกเขาสามารถอัพเกรดการจัดอันดับของพวกเขา? นั่นคือพวกเขามีทรัพยากรที่ จำกัด เพราะพวกเขาไม่มีสิทธิ์ การปฏิบัติที่ดีที่สุดที่นี่คืออะไร? หมายเหตุนี่คือการทำให้เข้าใจง่ายโดยรวมของกรณีจริง นอกจากนี้เพื่อชี้แจง - อ่านชื่นชม ปรับปรุง: นี่คือตัวเลือกที่เราพิจารณาแล้ว: การจัดเก็บวัตถุการอนุญาตของผู้ใช้หนึ่งครั้งบนไคลเอนต์การสอบถามมันเมื่อดำเนินการเข้าสู่ระบบหรืออัพเกรดบัญชี การส่งผ่านnullค่าใน JSON บ่งชี้ว่ามีอยู่จริง แต่ไม่มีการถ่ายโอนจริง …
23 rest  http  url  http-response 

2
การ“ เปิดเผย” บางสิ่งหมายความว่าอย่างไร
ดังนั้นฉันกำลังทำงานในการสร้างแอปพลิเคชัน Google App Engine และฉันเจอคำว่า "เปิดเผย" หลายครั้งเช่น "แอปแรกของคุณสามารถแสดงวัตถุโดยใช้ HTTP based API" และ "เปิดเผยคลาสข้อมูลโมเดลผ่าน REST API " "เปิดเผย" หมายความว่าอะไร? มีการกระทำบางอย่างที่เกี่ยวข้องหรือไม่หรือเป็นส่วนนามธรรมของการออกแบบ?

2
ฉันควรจัดเก็บการอ้างสิทธิ์ผู้ใช้ของฉันในโทเค็น JWT หรือไม่
ฉันใช้โทเค็น JWT ในส่วนหัว HTTP เพื่อตรวจสอบสิทธิ์คำขอไปยังเซิร์ฟเวอร์ทรัพยากร เซิร์ฟเวอร์ทรัพยากรและเซิร์ฟเวอร์รับรองความถูกต้องมีบทบาทผู้ปฏิบัติงานแยกกันสองบทบาทบน Azure ฉันไม่สามารถตัดสินใจได้ว่าควรจัดเก็บการเคลมในโทเค็นหรือแนบไปกับคำขอ / ตอบกลับด้วยวิธีอื่น รายการการอ้างสิทธิ์ส่งผลกระทบต่อการแสดงผลองค์ประกอบ UI ฝั่งไคลเอ็นต์รวมถึงการเข้าถึงข้อมูลบนเซิร์ฟเวอร์ ด้วยเหตุนี้ฉันต้องการตรวจสอบให้แน่ใจว่าการเรียกร้องที่ได้รับจากเซิร์ฟเวอร์นั้นเป็นของแท้และผ่านการตรวจสอบก่อนที่จะดำเนินการตามคำขอ ตัวอย่างของการอ้างสิทธิ์คือ: CanEditProductList, CanEditShopDescription, CanReadUserDetails เหตุผลที่ฉันต้องการใช้โทเค็น JWT สำหรับพวกเขาคือ: การป้องกันที่ดีขึ้นต่อการแก้ไขการเคลมสินค้าด้านลูกค้า ไม่จำเป็นต้องค้นหาการอ้างสิทธิ์ในทุกคำขอ เหตุผลที่ฉันไม่ต้องการใช้โทเค็น JWT: เซิร์ฟเวอร์รับรองความถูกต้องจะต้องทราบรายการการเรียกร้องเป็นศูนย์กลางของแอพ โทเค็นกลายเป็นจุดเดียวของการแฮ็ค ฉันได้อ่านบางสิ่งที่บอกว่าโทเค็น JWT ไม่ได้มีไว้สำหรับข้อมูลระดับแอป สำหรับฉันแล้วดูเหมือนว่าทั้งคู่มีข้อเสีย แต่ฉันโน้มตัวไปยังการรวมการอ้างสิทธิ์เหล่านี้ลงในโทเค็นและเพียงแค่ต้องการเรียกใช้สิ่งนี้โดยผู้ที่เคยจัดการกับเรื่องนี้มาก่อน หมายเหตุ: ฉันจะใช้ HTTPS สำหรับคำขอ API ทั้งหมดดังนั้นดูเหมือนว่าโทเค็นจะปลอดภัยพอ ฉันใช้ AngularJS, C #, Web API 2 และ MVC5

6
REST endpoint เพื่อแสดงตัวอย่างก่อน POSTing
ฉันออกแบบเว็บแอปพลิเคชั่นใหม่ซึ่งขับเคลื่อนโดยแบ็กเอนด์ REST และส่วนหน้า HTML + JS มีวิธีการPOSTหนึ่งวิธีในการเปลี่ยนเอนทิตีหนึ่ง (ลองเรียกใช้การกำหนดค่า) ซึ่งมีผลข้างเคียงหลายอย่างในสถานะขององค์ประกอบหลายอย่างของแอปพลิเคชัน สมมติว่ามีการดำเนินการPOSTด้วยวิธีนี้: POST /api/config BODY {config: ....} ด้วยเหตุนี้ฉันจึงต้องการแสดงตัวอย่างก่อนที่จะทำการเปลี่ยนแปลงเหล่านั้นเพื่อให้ผู้ใช้สามารถสังเกตเห็นสิ่งที่กำลังจะเปลี่ยนแปลง สิ่งแรกที่ฉันคิดเกี่ยวกับการทำให้จุดสิ้นสุดGETสำหรับการแสดงตัวอย่างส่งเนื้อความของสถานะใหม่ของเอนทิตี ทางนี้: GET /api/preview/items BODY {config: ....} อาจแสดงสถานะใหม่สำหรับรายการที่มีการกำหนดค่าใหม่ GET /api/preview/sales BODY {config: ....} อาจแสดงสถานะใหม่สำหรับการขายด้วยการกำหนดค่าใหม่ ดูเหมือนว่าเป็นความคิดที่ดีที่จะใช้คำกริยาGETเพราะฉันไม่ได้เปลี่ยนสถานะของแอปพลิเคชัน อย่างไรก็ตามการใช้ของร่างกายร้องขอกับGETคำขอดูเหมือนว่าจะท้อแท้ มีวิธีปฏิบัติที่ดีเกี่ยวกับเรื่องนี้หรือไม่? ตัวเลือกอื่นอาจจะเก็บการกำหนดค่าเป็นแบบร่างด้วยวิธีการหนึ่งและแสดงผลลัพธ์กับผู้อื่น แต่จะต้องมีขั้นตอนเพิ่มเติมและต้องจัดการแบบร่างในเซิร์ฟเวอร์: POST /api/preview/config BODY {config: ....} GET /api/preview/items?idPreviewConfig=1

3
การจัดการการต่ออายุโทเค็น / การหมดอายุเซสชันใน RESTful API
ฉันกำลังสร้าง RESTful API ที่ใช้โทเค็น JWT สำหรับการรับรองความถูกต้องของผู้ใช้ (ที่ออกโดยloginปลายทางและส่งในส่วนหัวทั้งหมดหลังจากนั้น) และโทเค็นต้องได้รับการรีเฟรชหลังจากระยะเวลาคงที่ (เรียกrenewจุดสิ้นสุด ) เป็นไปได้ว่าเซสชัน API ของผู้ใช้จะไม่ถูกต้องก่อนที่โทเค็นจะหมดอายุดังนั้นจุดสิ้นสุดทั้งหมดของฉันเริ่มต้นด้วยการตรวจสอบว่า: 1) โทเค็นยังคงถูกต้องและ 2) เซสชันของผู้ใช้ยังคงถูกต้อง ไม่มีวิธีในการทำให้โทเค็นเป็นโมฆะโดยตรงเนื่องจากไคลเอนต์เก็บไว้ในเครื่อง ดังนั้นจุดสิ้นสุดของฉันทั้งหมดต้องส่งสัญญาณให้ลูกค้าทราบถึงสองเงื่อนไขที่เป็นไปได้: 1) ถึงเวลาต่ออายุโทเค็นหรือ 2) เซสชันนั้นไม่ถูกต้องและพวกเขาไม่ได้รับอนุญาตให้เข้าถึงระบบอีกต่อไป ฉันสามารถนึกถึงทางเลือกสองทางสำหรับจุดสิ้นสุดของฉันในการส่งสัญญาณลูกค้าเมื่อเกิดหนึ่งในสองเงื่อนไข (สมมติว่าลูกค้าสามารถปรับให้เข้ากับตัวเลือกใดตัวเลือกหนึ่ง): ส่งคืนรหัส http 401 (ไม่ได้รับอนุญาต) หากเซสชันไม่ถูกต้องหรือส่งคืนรหัส 412 (เงื่อนไขเบื้องต้นล้มเหลว) เมื่อโทเค็นหมดอายุและถึงเวลาเรียกrenewจุดสิ้นสุดซึ่งจะส่งคืนรหัส 200 (ok) ส่งคืน 401 สำหรับการส่งสัญญาณว่าเซสชันไม่ถูกต้องหรือโทเค็นหมดอายุแล้ว ในกรณีนี้ลูกค้าจะโทรหาrenewปลายทางทันทีถ้ามันคืน 200 โทเค็นจะถูกรีเฟรช แต่ถ้าrenewกลับ 401 ก็หมายความว่าไคลเอนต์ออกจากระบบ คุณจะแนะนำทางเลือกใดจากสองข้อด้านบน อันไหนจะเป็นมาตรฐานมากขึ้นเข้าใจง่ายและ / หรือสงบมากขึ้น? หรือคุณจะแนะนำวิธีการอื่นโดยสิ้นเชิง? คุณเห็นปัญหาที่ชัดเจนหรือความเสี่ยงด้านความปลอดภัยที่มีตัวเลือกอย่างใดอย่างหนึ่ง? …

2
จะเขียนเซิร์ฟเวอร์ HTTP ได้อย่างไร?
ตามที่ชื่อบอกว่าฉันต้องการเขียนเซิร์ฟเวอร์ HTTP คำถามของฉันคือสิ่งนี้ฉันจะทำสิ่งนี้ได้อย่างไร ฉันรู้ว่ามันฟังดูธรรมดามากและ "ระดับสูง" ด้วย แต่ก็มีวิธีหนึ่งสำหรับความบ้าคลั่งของฉัน ฉันเชื่อว่าคำตอบของคำถามนี้คือฉันไม่เชื่อเรื่องพระเจ้า ความหมายไม่ว่าฉันจะใช้ภาษาใด (เช่น C, C ++, Java ฯลฯ ) คำตอบควรเหมือนกัน ฉันมีความคิดทั่วไปว่ามันควรจะทำงานอย่างไร: เปิดซ็อกเก็ตที่พอร์ต 80 รอให้ลูกค้าทำการร้องขอ อ่านคำขอ (เช่นบุคคลนี้ต้องการหน้า "contact-us.html") ค้นหาและอ่าน "contact-us.html" ส่งส่วนหัว html จากนั้นส่งเนื้อหาของ "contact-us.html" เสร็จสิ้น อย่างที่ฉันพูดฉันเชื่อว่านี่เป็นกระบวนการ แต่ฉันไม่แน่ใจ 100% สิ่งนี้ทำให้ฉันเป็นหัวใจของคำถาม บุคคลค้นหาข้อมูลนี้ได้อย่างไรหรือที่ไหน? ถ้าฉันไม่ต้องการเขียนเฉพาะเซิร์ฟเวอร์ HTTP จะเกิดอะไรขึ้นถ้าฉันต้องการเขียนเซิร์ฟเวอร์ FTP เซิร์ฟเวอร์แชทโปรแกรมดูรูปภาพ ฯลฯ บุคคลค้นหาขั้นตอน / กระบวนการที่แน่นอนที่จำเป็นในการสร้างเซิร์ฟเวอร์ HTTP ที่ใช้งานได้อย่างไร เพื่อนร่วมงานคนหนึ่งบอกฉันเกี่ยวกับส่วนหัว html ดังนั้นฉันจะไม่มีทางรู้เรื่องนี้เลยถ้าไม่มีเขา …

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