Score:0

คำขอ PATCH ส่งคืน 404, POST และ GET

ธง sd

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

สิ่งที่แปลกคือคำขอ GET และ POST ที่ส่งไปยัง URL เดียวกันนั้นใช้ได้ดี ฉันสามารถเปลี่ยนรหัสสำหรับ REST API เป็นวิธีแก้ปัญหาได้ แต่ความเข้าใจของฉันคือ PATCH นั้นมากกว่า "ถูกต้อง" สำหรับวิธีที่เราใช้คำขอใน API

รายละเอียดบางอย่าง:

  • ดูเหมือนว่า Apache กำลังบล็อกคำขอก่อนที่จะได้รับ REST API ที่กำหนดเอง ฉันเห็นทั้งคำขอ PATCH และ GET ในบันทึกการเข้าถึง Apache แต่เฉพาะคำขอ GET เท่านั้นที่ปรากฏในบันทึก REST API ที่กำหนดเอง (FWIW, REST API ที่กำหนดเองถูกนำมาใช้ใน กระติกน้ำ) โดยใช้ กันนิคอร์น เป็นเซิร์ฟเวอร์โฮสติ้ง

    ตัวอย่างบันทึกการเข้าถึง Apache:

    192.168.0.1 - ไม่ทราบ [27/Aug/2021:18:23:27 +0000] "PATCH /admin-api/services/12872 HTTP/1.1" 404 14 "https://www.example.com/admin-dashboard /" ...

    192.168.0.1 - ผู้ดูแลระบบ [27/ส.ค./2021:18:23:43 +0000] "GET /admin-api/services/12872 HTTP/1.1" 200 988 "-" ...

  • สิ่งหนึ่งที่ฉันสังเกตเห็นคือคำขอ PATCH กำลังแทนที่ชื่อผู้ใช้ด้วย "unknown" สิ่งนี้ทำให้ฉันเชื่อว่ามีบางอย่างผิดปกติกับ CORS ฉันพบ "หัวข้อ" การกำหนดค่าที่ไม่มี OPTIONS และ PATCH ดังนั้นฉันจึงเพิ่มเข้าไป แต่ก็ยังพบปัญหาเดิม ด้านล่างนี้คือการกำหนดค่าปัจจุบันของตัวเลือก:

    ส่วนหัวตั้งค่า Access-Control-Allow-Methods เสมอ "POST, GET, OPTIONS, PATCH"
    
  • ฉันไม่เห็นคำขอ OPTIONS ก่อนการบินในบันทึก Apache หรือหน้าต่างคอนโซลเบราว์เซอร์ ฉันได้ลองกับ Google Chrome (92.0) และ Firefox (91.0) แล้ว

  • คำขอ PATCH มีส่วนหัว "การเข้าถึงการควบคุมอนุญาตต้นทาง" ที่ตั้งค่าเป็น "POST, GET, OPTIONS, PATCH"

  • การกำหนดค่าพร็อกซี Apache ใช้ซ็อกเก็ต Unix เพื่อพร็อกซีไปยัง Gunicorn:

    <Location /admin-api>
      ProxyPass unix:/run/admin-api.sock|http://127.0.0.1
    </Location>
    
  • คำขอดึง JavaScript: (apiUrl และ รหัส เป็นตัวแปรที่ตั้งค่าก่อนหน้าในฟังก์ชัน):

    ให้ resp = wait fetch(`${apiUrl}/services/${id}`, {
       ข้อมูลรับรอง: "รวม",
       วิธีการ: "PATCH",
       ส่วนหัว: {
         "ประเภทเนื้อหา": "แอปพลิเคชัน/json",
         ยอมรับ: "application/json",
       },
       เนื้อความ: JSON.stringify({
         ข้อมูล: { นาที: 1, สูงสุด: 3 },
       }),
     });
    
  • อาปาเช่ เวอร์ชั่น 2.4.6. ฉันรู้แล้ว ในทางเทคนิค ซ็อกเก็ต Unix ถูกนำมาใช้ใน 2.4.7แต่ฟังก์ชันอื่นๆ ใช้งานได้ทั้งหมด ฉันได้ลองเปลี่ยนไปใช้พอร์ต "ปกติ" แล้ว แต่ได้ผลลัพธ์เดียวกัน

Michael Hampton avatar
cz flag
ตรวจสอบการกำหนดเส้นทางและบันทึกของแอปพลิเคชันของคุณ ดูเหมือนจะเป็นปัญหากับแอป ไม่ใช่เว็บเซิร์ฟเวอร์

โพสต์คำตอบ

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