خلفية
يتم فصل العديد من المشاريع التي نقوم بها الآن عن النهايات الأمامية والخلفية ، مما يؤدي إلى مشكلة شائعة جدًا. صفحاتنا وواجهاتنا تحت أسماء مجال مختلفة. عندما نصل إلى واجهة الواجهة الخلفية من خلال AJAX ، ستنشأ مشاكل في المجال. كيف يمكننا حل هذه المشكلة؟ بشكل عام ، هناك حلان: CORS و JSONP. يقوم Spring بتبسيط تكوين CORS ، دعنا نلقي نظرة على الكورس الذي يوفره.
وصف مشكلة النطاق
غالبًا ما يواجه تطوير الويب مشاكل عبر المجال ، وتشمل الحلول: JSONP ، IFRAME ، CORS ، إلخ.
cors مقارنة بـ JSONP:
1. يمكن لـ JSONP تنفيذ الطلبات فقط ، بينما يدعم CORS جميع أنواع طلبات HTTP.
2. باستخدام CORS ، يمكن للمطورين استخدام XMLHTTPRequest العادي لبدء الطلبات والحصول على البيانات ، التي لديها معالجة خطأ أفضل من JSONP.
3. JSONP مدعوم بشكل أساسي من قبل المتصفحات القديمة. غالبًا ما لا يدعمون الكورس ، ومعظم المتصفحات الحديثة تدعم بالفعل كورز.
WebMVCConfigurer كائن
يمكننا تهيئة كائن WebMVCConfigurer لتكوين CORS Mapping.
cornfigurationpublic class corscongiguration {bean public webmvcconfigurer corsconfigurer () {return new webmvcconfigureRadapter () {Override public void addCorsMappings (سجل corsregistry) {registry.addmapping ("/api/**") ؛ // commodorigins ("http://domain2.com") // حدد اسم المجال المصدر //. }} ؛ }}ورث webmvcConfigureRadapter
هذه الطريقة تشبه إلى حد كبير الطريقة أعلاه
@configuration @enablewebmvcpublic corsconfiguration_2 يمتد webmvcConfigureRadapter {Override public void addCorsMappings (سجل corsregistry) {registry.addmapping ("/api/**") ؛ }}Corsfilter
نادراً ما يتم استخدام هذه الطريقة الآن
@component@enableWebmvcpublic Class CorsfilterCongiguration يمتد corsfilter {public corsfilterCongigiguration (corsconfigurationsource configsource) {super (configsource) ؛ } bean publicerregistrationbean corsfilter () {urlBasedCorsConfigurationsource source = new urlbasedcorsconfigurationsource () ؛ corsconfiguration config = new corsconfiguration () ؛ config.setallowcredentials (true) ؛ config.addallowedorigin ("*") ؛ // config.addallowedorigin ("http://domain1.com") ؛ config.addallowedheader ("*") ؛ config.addallowedMethod ("*") ؛ source.registerCorsConfiguration ("/api/**" ، config) ؛ FilterRegistrationBean Bean = New FilterRegistrationBean (New Corsfilter (Source)) ؛ Bean.setorder (0) ؛ // يجب إرجاع الفاصوليا قبل جميع المرشحات ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.