เมื่อเราต้องการให้บริการกับโลกภายนอกผ่านส่วนต่อประสานที่เหลือหากสถาปัตยกรรมถูกแยกออกจากด้านหน้าและด้านหลังในเวลานี้มันจะเกี่ยวข้องกับปัญหาข้ามโดเมน วิธีแก้ปัญหาข้ามโดเมน? มาพูดคุยเกี่ยวกับปัญหานี้ด้านล่าง
โซลูชัน 1: เพิ่ม @crossorigin คำอธิบายประกอบบนคอนโทรลเลอร์
วิธีใช้เป็นดังนี้:
@crossorigin // วิธีการเพิ่มความคิดเห็น @RestController คลาสสาธารณะ handlerscancontroller {@crossorigin (lewlowcredentials = "true", requalheaders = "*", methods = {requestmethod.get, requestmethod.post, requestmethod.delete requestmethod.patch}, origins = "*") @postmapping ("/ยืนยัน") ตัวจัดการการตอบสนองสาธารณะ (@requestbody Request json) {return null; - โซลูชัน 2: การกำหนดค่าทั่วโลก
รหัสมีดังนี้:
@Configuration คลาสสาธารณะ myConfiguration {@bean public webmvcconfigurer corsconfigurer () {ส่งคืน webmvcconfigureradapter ใหม่ () {@Override โมฆะสาธารณะ addCorsMappings (Corsregistry Registry) - - โซลูชัน 3: ใช้ร่วมกับตัวกรอง
ในคลาสหลักของการบูตสปริงเพิ่ม corsfilter
/** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * มีกลไกก่อนการบินสำหรับโดเมนข้ามนี้ ในการกล่าวอย่างตรงไปตรงมามันจะออกคำขอสองคำขอตัวเลือกหนึ่งตัวเลือกและคำขอจริงหนึ่งครั้ง*/ @bean สาธารณะ corsfilter corsfilter () {ขั้นสุดท้าย urlbasedcorsconfigurationsource แหล่งที่มา = ใหม่ urlbasedcorsconfigurationsource (); corsconfiguration config = new corsconfiguration (); config.setallowcredentials (จริง); // อนุญาตให้คุกกี้ข้ามโดเมน config.addallowedorigin ("*"); // #allowed URI ของคำขอไปยังเซิร์ฟเวอร์นี้ * หมายถึงทั้งหมดที่ได้รับอนุญาต ใน SpringMVC หากตั้งค่าเป็น *มันจะถูกแปลงโดยอัตโนมัติเป็น Origin Config.addallowedHeader (" *"); // #add to Access Header, * หมายถึง config.setMaxage ทั้งหมด (18000L); // เวลาแคชของคำขอ preflight (วินาที) นั่นคือในช่วงเวลานี้ config.addallowedMethod ("ตัวเลือก"); // วิธีการที่อนุญาตให้ส่งคำขอ * หมายความว่าทั้งหมดอนุญาตให้ config.addallowedmethod ("หัว"); config.addallowedmethod ("get"); // อนุญาตให้วิธีการขอของ Get Config.addallowedMethod ("Put"); config.addallowedmethod ("โพสต์"); config.addallowedmethod ("ลบ"); config.addallowedmethod ("patch"); Source.RegisterCorsConfiguration ("/**", config); ส่งคืน Corsfilter ใหม่ (แหล่งที่มา); - แน่นอนว่าหากมีไมโครไซต์จำนวนมากคุณต้องเพิ่มรหัสชิ้นหนึ่งลงในคลาสหลักของแต่ละบริการซึ่งละเมิดหลักการแห้ง วิธีที่ดีกว่าคือการแก้ปัญหาข้ามโดเมนที่ชั้นเกตเวย์ของ Zuul, ครั้งเดียวและสำหรับทั้งหมด
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Cross-Domain front-end โปรดดู: http://www.vevb.com/article/83093.htm
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น