คำขอข้ามโดเมนคืออะไร?
ความเข้าใจที่เรียบง่ายคือการขอไฟล์เซิร์ฟเวอร์ที่ไม่ได้อยู่ในชื่อโดเมนเดียวกัน มาใช้ตัวอย่างที่เป็นประโยชน์เพื่อแสดงให้เห็นถึงสิ่งนี้ ตัวอย่างเช่น baidu.com ส่งคำขอไปยัง cxyblog.com ชื่อโดเมนทั้งสองนั้นแตกต่างกัน ดังนั้นนี่คือ cross-domain ด้วยเหตุผลด้านความปลอดภัยสิ่งนี้ไม่ได้รับอนุญาต ควรสังเกตว่าคำขอที่ส่งโดยโดเมนย่อยที่แตกต่างกันพอร์ตที่แตกต่างกันของโดเมนเดียวกันหรือโปรโตคอลที่แตกต่างกันของโดเมนเดียวกันก็ถือว่าเป็น cross-domain และสามารถจำแนกได้ในหมวดหมู่ต่อไปนี้:
(1) http://www.baidu.com ส่งคำขอไปที่ http://www.cxyblog.com
(2) http://www.cxyblog.com ส่งคำขอไปที่ http://image.cxyblog.com
(3) http://www.baidu.com:8000 ส่งคำขอไปที่ http://www.cxyblog.com
(4) http://www.cxyblog.com ส่งคำขอไปที่ https://www.cxyblog.com
(5) http://www.cxyblog.com ส่งคำขอไปที่ http://112.65.242.67 (สมมติว่า IP ที่สอดคล้องกับชื่อโดเมน www.cxyblog.com คือ 112.65.242.67)
สถานการณ์ทั้งหมดข้างต้นทั้งหมดเป็นคำขอข้ามโดเมน
จะใช้คำขอข้ามโดเมนเมื่อใด
บางครั้งเมื่อเราจำเป็นต้องใช้ JavaScript เพื่อดำเนินการ AJAX เราจะพบกับการดำเนินการตามคำขอข้ามโดเมนประเภทนี้
ทำไมคำขอข้ามโดเมนไม่สามารถนำไปใช้โดยตรงโดยใช้ JavaScript ได้
เนื่องจากเหตุผลด้านความปลอดภัยเบราว์เซอร์ไม่อนุญาตให้ JavaScript ขอทรัพยากรข้ามโดเมนเนื่องจากข้อ จำกัด เกี่ยวกับนโยบายที่คล้ายคลึงกันของ JavaScript
วิธีแก้ปัญหาที่ JavaScript ไม่สามารถใช้คำขอข้ามโดเมนได้?
โซลูชันที่ใช้ในบทความนี้คือการใช้ FlyJSONP เพื่อดำเนินการตามคำขอข้ามโดเมน FlyJSONP เป็นไลบรารีคลาส JavaScript ที่มีน้ำหนักเบาหรือที่เรียกว่าปลั๊กอิน JSON ขนาดทั้งหมดหลังจากการบีบอัดอยู่ที่ประมาณ 3KB และไม่จำเป็นต้องรองรับเฟรมเวิร์กอื่น ๆ
ที่อยู่เว็บไซต์อย่างเป็นทางการของ FlyJSONP: http://alotaiba.github.com/flyjsonp/
ดังนั้นจะใช้ไลบรารีคลาส FlyJSONP เพื่อใช้คำขอข้ามโดเมนได้อย่างไร
(1) ก่อนอื่นคุณต้องโหลดสคริปต์ JavaScript ของ FlyJSONP นั่นคือ:
<script language = "javascript" src = "http://www.cxyblog.com/flyjsonp.min.js"> </script>
(2) เพื่อเริ่มต้นอินสแตนซ์ของ flyjsonp การดีบักพารามิเตอร์สามารถตั้งค่าเป็นจริงหรือเท็จนั่นคือ: flyjsonp.init ({debug: true}) ซึ่งหมายความว่าจะเปิดข้อมูลการดีบักและค่าพารามิเตอร์เป็นจริงหรือเท็จ;
(3) ถัดไปใช้วิธี GET หรือวิธีการโพสต์เพื่อขอข้อมูล รหัสตัวอย่างเฉพาะมีดังนี้:
// flyjsonp ใช้ cross-domain getFunction getData () {flyjsonp.init ({debug: true}); // เริ่มต้นอินสแตนซ์ของ flyjsonp, พารามิเตอร์การดีบักสามารถตั้งค่าเป็น flyjsonp.get (righ: {url: 'http: //www.cxyblog คำขอ: {// คำขอพารามิเตอร์: 5}, ความสำเร็จ: ฟังก์ชั่น (ข้อมูล) {// console.log (ข้อมูล); flyjsonp.init ({debug: true}); // เริ่มต้นอินสแตนซ์ของ flyjsonp, การดีบักพารามิเตอร์สามารถตั้งค่าเป็น flyjsonp.post ({url: 'http: //www.cxyblog.com/article/new' ชื่อเรื่อง: 'flyjsonp', คำอธิบาย: 'ทดสอบ'}, ความสำเร็จ: ฟังก์ชั่น (ข้อมูล) {Alert (ข้อมูล);}});}หมายเหตุ: เมื่อเซิร์ฟเวอร์ส่งออกไปยังไคลเอนต์เอาต์พุตจะต้องเป็นสตริง JSON มิฉะนั้นไคลเอนต์จะไม่สามารถรับได้
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น