1. สำหรับโครงการที่คั่นด้วยโครงการ Front-End และ Back-End หากโครงการ Front-End และโครงการ Back-End ถูกนำไปใช้ในสองโดเมนที่แตกต่างกันมันจะทำให้เกิดปัญหาข้ามโดเมนอย่างหลีกเลี่ยงไม่ได้
สำหรับปัญหาข้ามโดเมนทางออกแรกที่เราคิดว่าคือ JSONP และโดยทั่วไปฉันจัดการกับปัญหาข้ามโดเมนในอดีต
อย่างไรก็ตามวิธี JSONP ก็มีข้อบกพร่องเช่นกัน ไม่ว่าจะเป็นส่วนหน้าหรือแบ็คเอนด์วิธีการเขียนนั้นแตกต่างจากวิธีการเขียน AJAX ตามปกติของเราและ Back-End ก็จำเป็นต้องทำการเปลี่ยนแปลงที่สอดคล้องกัน ยิ่งไปกว่านั้นวิธี JSONP สามารถส่งผ่านพารามิเตอร์ผ่าน Get Request และแน่นอนว่ามีข้อบกพร่องอื่น ๆ ในการตอบสนองต่อสิ่งนี้ฉันไม่รีบใช้วิธี JSONP เพื่อแก้ปัญหาข้ามโดเมน ฉันออนไลน์เพื่อค้นหาวิธีการอื่น ๆ ซึ่งเป็นสิ่งที่บทความนี้พูดถึงส่วนใหญ่และแก้ปัญหาข้ามโดเมนผ่านโปรโตคอล CORS ใน Springboot
2. ข้อตกลง Cors
คุณสมบัติใหม่ใน H5: การแบ่งปันทรัพยากรข้ามแหล่งกำเนิด นักพัฒนาของเรา (ส่วนใหญ่เป็นผู้พัฒนาแบ็กเอนด์) สามารถตัดสินใจได้ว่าสามารถเข้าถึงทรัพยากรได้ในโดเมนหรือไม่
CORS เป็นมาตรฐาน W3C ซึ่งอนุญาตให้เบราว์เซอร์ (ปัจจุบันต่ำกว่า IE8 ไม่สามารถรองรับได้) เช่นเดียวกับเซิร์ฟเวอร์ของเราจากแหล่งต่าง ๆ เราสามารถใช้ AJAX ต่อไปเพื่อการเข้าถึงคำขอ
สำหรับบทความเฉพาะเกี่ยวกับโปรโตคอล CORS โปรดดูที่ http://www.vevb.com/article/83093.htm บทความนี้ค่อนข้างดี
3. วิธีแก้ปัญหาข้ามโดเมนผ่านโปรโตคอล CORS ใน Springboot
เวอร์ชัน SpringMVC4.2 เพิ่มการสนับสนุนสำหรับ CORS
ในปัจจุบันโครงการที่ฉันทำนั้นได้รับการพัฒนาโดยทั่วไปใน Springboot ดังนั้นฉันจะโพสต์การใช้งานใน Springboot ที่นี่
@ConfigurationPublic คลาส MyWebAppConfigurer ขยาย WebMVCCONFigurerAdapter {@Override โมฆะสาธารณะ AddCorsMappings (Corsregistry Registry) {registry.addmapping ("/**"); -เส้นทางของเราสามารถกำหนดค่าได้ใน addmapping /** หมายถึงเส้นทางทั้งหมด
แน่นอนคุณสมบัติอื่น ๆ สามารถแก้ไขได้
@ConfigurationPublic คลาส MyWebAppConfigurer ขยาย WebMVCCONFigurerAdapter {@Override โมฆะสาธารณะ AddCorsMappings (Corsregistry Registry) {registry.addmapping ("/api/**") .Lowlowcredentials (เท็จ) .maxage (3600); -สองข้างต้นมีไว้สำหรับการกำหนดค่าทั่วโลก หากคุณต้องการมีรายละเอียดมากขึ้นคุณสามารถใช้คำอธิบายประกอบ @crossorigin ในคลาสคอนโทรลเลอร์
@crossorigin (Origins = "http://192.168.1.97:8080", maxage = 3600) @requestmapping ("rest_index")@restcontrollerpublic indexcontroller { สิ่งนี้ช่วยให้คุณระบุว่าวิธีการทั้งหมดในคอนโทรลเลอร์สามารถจัดการคำขอได้จาก HTTP: 19.168.1.97: 8080
สรุป
ข้างต้นคือการแนะนำตัวแก้ไขเกี่ยวกับวิธีการแก้ปัญหาข้ามโดเมนผ่านโปรโตคอล CORS ใน Springboot ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!