المجال المتقاطع
يبدأ المورد طلب HTTP عبر الموقع عندما يكون المورد الذي يطلبه اسمًا مختلفًا عن المورد الذي يوفره.
على سبيل المثال ، يقدم تطبيق ويب باسم المجال (http://domainb.foo) مورد صورة معين (http://domainb.foo/image.jpg) لموقع اسم المجال B (http://domainb.foo/image.jpg) من خلال علامة. سيؤدي تطبيق الويب الذي يحمل اسم المجال A إلى قيام المتصفح ببدء طلب HTTP عبر الموقع. في تطوير الويب اليوم ، أصبح استخدام طلبات HTTP عبر المواقع لتحميل موارد مختلفة (بما في ذلك CSS ، والصور ، ونصوص JavaScript ، وغيرها من الموارد) وسيلة شائعة وشائعة.
كما تعلمون ، لأسباب أمنية ، تقيد المتصفحات طلبات المواقع المتقاطعة التي بدأت في البرامج النصية. على سبيل المثال ، لبدء طلبات HTTP باستخدام كائن XMLHTTPREQUEST ، يجب عليك الامتثال لسياسة الأصل من نفس. على وجه التحديد ، يمكن لتطبيق الويب ويمكنه فقط استخدام كائن XMLHTTPrequest لبدء طلبات HTTP إلى اسم المجال المصدر الذي يتم تحميله ، ولا يمكنه بدء طلبات إلى أي اسم مجال آخر. من أجل تطوير تطبيقات الويب الأكثر قوة وأكثر ثراءً وأكثر أمانًا ، يتوق المطورون إلى أن يصبحوا أكثر قوة وأغنى دون فقدان الأمن. على سبيل المثال ، يمكنك استخدام XMLHTTPrequest لبدء طلب HTTP عبر الموقع. (هذا الوصف للمجال المتقاطع غير دقيق. المجال المتقاطع ليس هو أن المتصفح يقيد طلبات النطاق المتقاطع ، ولكن يمكن بدء طلبات المجال المتقاطع بشكل طبيعي ، ولكن يتم اعتراض النتيجة على الخادم الخلفي لا يسمح بما إذا كان ذلك هو المتقاطع أو لا يسمح بمبدأ التبديل عن ذلك. مجالات HTTPS ، مثل Chrome و Firefox.
المزيد: https://developer.mozilla.org/zh-cn/docs/web/http/access_control_cors
كروس
CORS هو الاسم الكامل مشاركة الموارد الأصلي. يحتاج الخادم فقط إلى إضافة معلومات رأس الاستجابة ذات الصلة لتمكين العميل من إصدار طلبات Ajax عبر المجال.
crossorigin
1. استخدام جميع الطلبات مباشرة على وحدة التحكم يمكن أن تكون مهندسًا متقاطعًا ، يعني Origins = "*" أنه يمكن طلب جميع الطلبات.
crossorigin (Origins = "http://domain2.com" ، MaxAge = 3600)@restController@requestMapping ("/account") class public class accountController {requestmapping ("/{id}") حساب public retrieve (pathvariable id) {// ...} "/{id}") public void remove (@pathvariable id) {// ...}} 2. استخدمه في الطريقة
crossorigin (maxage = 3600) @restController @requestMapping ("/account") accountController {crossorigin ("http://domain2.com") @ @requestmapping ("/{id}" "/{id}") public void remove (@pathvariable id) {// ...}}طريقة أخرى:
الغرض الرئيسي من Corsfilter هو إضافة رؤوس المعلومات ذات الصلة ، والتي يمكن أيضًا تحقيقها باستخدام Filter.
ConfigurationPublic class beanconfiguration {bean public corsfilter corsfilter () {Final urlbasedcorsconfigurationsource urlbasedcorsconfigurationsource = new urlbasedcorsconfigurationsource () ؛ corsconfiguration النهائي corsconfiguration = جديد corsconfiguration () ؛ corsconfiguration.setallycredentials (صواب) ؛ corsconfiguration.addallowedorigin ("*") ؛ corsconfiguration.AddallowedHeader ("*") ؛ corsconfiguration.addallowedMethod ("*") ؛ urlbasedcorsconfigurationsource.registerCorsConfiguration ("/**" ، corsconfiguration) ؛ إرجاع Corsfilter الجديد (urlbasedcorsconfigurationsource) ؛ }}Access-Control-allow-Origin: اسم مجال العميل المسموح به ، على سبيل المثال: http://web.xxx.com. إذا *، فهذا يعني أنه يمكن الوصول إليها من أي مجال ، أي أنه لا توجد قيود مطلوبة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.