Score:0

"ไม่อนุญาตให้ใช้ CORS หลายแหล่งที่มา" - ใช้เซิร์ฟเวอร์แยกวิเคราะห์และ apache2

ธง gi

ฉันใช้ apache2 เป็น reverse proxy สำหรับ parse-server ของฉัน เพื่อที่จะอนุญาตคำขอข้ามแหล่งกำเนิด ฉันลองตั้งค่าในตอนแรก:

ส่วนหัวตั้งค่า Access-Control-Allow-Origin "*" เสมอ

ในไฟล์กำหนดค่า apache พร้อมกับ:

ProxyPass /parse/ http://localhost:1337/parse/
ProxyPassReverse /parse/ http://localhost:1337/parse/
RewriteEngine เปิดอยู่
RewriteCond %{REQUEST_METHOD} ตัวเลือก
RewriteRule ^(.*)$ $1 [R=200,L]

หลังจากตั้งค่านี้ คำขอถูกส่งต่อจาก apache ไปยัง parse-server ของฉันได้สำเร็จ อย่างไรก็ตามตอนนี้ Webapp ของฉันพ่น CORS ไม่อนุญาตให้มีแหล่งกำเนิดหลายแห่ง.

ในคอนโซลนักพัฒนาของเบราว์เซอร์ของฉัน ฉันเห็นว่าตัวเลือก Access-Control-Allow-Origin นี้ถูกตั้งค่าสองครั้ง

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

ฉันได้ยืนยันว่าตัวอย่างที่สองนี้ปรากฏขึ้นเนื่องจากเซิร์ฟเวอร์แยกวิเคราะห์ อย่างไรก็ตาม ฉันไม่สามารถหาวิธีป้องกันไม่ให้ parse-server หรือ apache ตั้งค่าตัวเลือกนี้ในการตอบกลับได้

ฉันลองเปลี่ยนบรรทัดเริ่มต้นในการกำหนดค่า apache เป็น:

1.

ส่วนหัว setifempty Access-Control-Allow-Origin "*" เสมอ
ส่วนหัวเพิ่ม Access-Control-Allow-Origin "*" เสมอ
ส่วนหัวเพิ่ม Access-Control-Allow-Origin "*" เสมอ
ส่วนหัวแก้ไข Access-Control-Allow-Origin "^$" "*" เสมอ

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

ฉันใช้เวอร์ชัน apache2 2.4.29 และแยกวิเคราะห์เซิร์ฟเวอร์ 4.10.3.

ไม่มีใครรู้วิธีที่จะทำให้มันใช้งานได้?

Score:2
ธง cn

ก่อนอื่น ฉันคิดว่าสิ่งสำคัญคือต้องเข้าใจพื้นฐานเล็กน้อยเกี่ยวกับวิธีการทำงานของ CORS:

  • CORS ได้รับการตรวจสอบฝั่งไคลเอ็นต์โดยเบราว์เซอร์
  • เพื่อตรวจสอบว่าต้นทาง (โดเมน โปรโตคอล หรือพอร์ตที่แตกต่างกัน) ได้รับอนุญาตให้เข้าถึงต้นทางอื่น a คำขอก่อนเที่ยวบิน อาจออกก่อนคำขอข้ามแหล่งกำเนิดจริง คำขอนี้ใช้วิธี OPTIONS และจำเป็นต้องมี การควบคุมการเข้าถึง ส่วนหัวในการตอบกลับ

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

เนื่องจาก CORS ได้รับการตรวจสอบในเบราว์เซอร์ Apache reverse-proxy จึงไม่ควรมีบทบาทใดๆ ในนั้นเมื่อเซิร์ฟเวอร์ส่วนหลังของคุณ (เซิร์ฟเวอร์แยกวิเคราะห์) ได้รับการกำหนดค่าอย่างถูกต้องเพื่อจัดการคำขอ CORS และส่งคำขอที่ถูกต้อง การควบคุมการเข้าถึง-* ส่วนหัวทุกอย่างควรใช้งานได้ไม่ว่าคุณใส่พรอกซีกี่อันก็ตาม ตราบเท่าที่พร็อกซีส่งต่อคำขอทั้งหมด

หรือคุณอาจต้องการ "ตบ" การกำหนดค่า CORS ในพร็อกซีย้อนกลับ แต่ดูเหมือนว่าไม่จำเป็นที่นี่ เนื่องจากคุณเห็นสอง การเข้าถึง-ควบคุม-อนุญาต-กำเนิด ส่วนหัวในการตอบกลับ ฉันสงสัยว่าในความเป็นจริงแล้ว parse-server พยายามจัดการกับคำขอ CORS แล้ว

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

  • คำขอก่อนบินมีลักษณะอย่างไร? มีแม้กระทั่งการร้องขอก่อนเที่ยวบินหรือไม่?
  • สำเร็จหรือล้มเหลว และมีข้อผิดพลาดอะไร?
  • อะไรคือ การควบคุมการเข้าถึง-* หัวข้อการตอบสนองในคำขอก่อนบิน?
  • มีการออกคำขอครั้งสุดท้ายหรือไม่ หัวข้อการตอบกลับของคำขอนั้นคืออะไร

คุณยังสามารถดีบักสิ่งเหล่านี้ได้ด้วยการเรียกใช้บริการด้วย ขด โดยตั้งค่าส่วนหัวต้นทาง

curl -v -X PUT -H "ที่มา: https://example.com" https://www.example.org

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

Score:0
ธง cn

ในคอนโซลนักพัฒนาของเบราว์เซอร์ของฉัน ฉันเห็นว่าตัวเลือก Access-Control-Allow-Origin นี้ถูกตั้งค่าสองครั้ง

ฉันตอบเกี่ยวกับส่วนหัวที่ซ้ำกัน คำถามที่คล้ายกัน เมื่อเร็ว ๆ นี้ในรายชื่อผู้รับจดหมาย

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

ลองดังต่อไปนี้:

ส่วนหัวเมื่อสำเร็จ ยกเลิกการตั้งค่า Access-Control-Allow-Origin
ส่วนหัวตั้งค่า Access-Control-Allow-Origin "*" เสมอ
Vinoth Rc avatar
fr flag
ส่วนหัวตั้งค่า Access-Control-Allow-Origin "*" ใช้งานได้

โพสต์คำตอบ

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