سؤال

أقوم بتطوير صفحة ويب تحتاج إلى عرض ، في IFRAME ، تقريرًا يقدمه خادم SharePoint التابع لشركة أخرى. هم بخير مع هذا.

إن الصفحة التي نحاول تقديمها في iframe تمنحنا خيارات X-Frame: Sameorigin التي تسبب المتصفح (على الأقل IE8) لرفض تقديم المحتوى في إطار.

أولاً ، هل هذا شيء يمكنهم التحكم فيه أم أنه شيء يفعله SharePoint بشكل افتراضي؟ إذا طلبت منهم إيقاف هذا ، هل يمكنهم القيام بذلك؟

ثانياً ، هل يمكنني فعل شيء لأخبر المتصفح بتجاهل رأس HTTP هذا وتقديم الإطار؟

هل كانت مفيدة؟

المحلول

إذا كانت الشركة الثانية سعيدة لك بالوصول إلى محتواها في iframe ، فيجب عليها التخلص من القيود - يمكنهم القيام بذلك بسهولة إلى حد ما في تكوين IIS.

لا يوجد شيء يمكنك القيام به للتحايل عليه ، ويجب أن يتم تصحيح أي شيء يعمل بسرعة في الإصلاح الساخن للأمان. لا يمكنك إخبار المتصفح بتقديم الإطار فقط إذا كان رأس محتوى المصدر يقول غير مسموح به في الإطارات. هذا من شأنه أن يجعل الأمر أسهل في اختطاف الجلسة.

إذا كان المحتوى يحصل فقط ، فأنت لا تنشر البيانات مرة أخرى ، فيمكنك الحصول على جانب خادم الصفحة ووكالة المحتوى بدون الرأس ، ولكن يجب أن يتم إبطال أي منشور.

نصائح أخرى

تحديث 2019: أنت يستطيع تجاوز X-Frame-Options في <iframe> باستخدام بلدي X-Frame-Bypass مكون الويب. يمتد عنصر IFRAME باستخدام وكلاء CORS متعددة وتم اختباره في أحدث Firefox و Chrome.

يمكنك استخدامه على النحو التالي:

  1. (اختياري) تضمين العناصر المخصصة مع امتداد polyfill المدمج ل Safari:

    <script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>
    
  2. قم بتضمين وحدة X-Frame-Bypass JS:

    <script type="module" src="x-frame-bypass.js"></script>
    
  3. أدخل العنصر المخصص لـ X-Frame-Bypas:

    <iframe is="x-frame-bypass" src="https://example.org/"></iframe>
    

رأس X-Frame-Options هو ميزة أمان يتم تطبيقها على مستوى المتصفح.

إذا كان لديك تحكم في قاعدة المستخدمين (DEPT for Corp) ، فيمكنك تجربة شيء مثل برنامج Greasemonkey (إذا كنت تستطيع) نشر Greasemonkey عبر الجميع و B) نشر البرنامج النصي بطريقة مشتركة) ...

بدلاً من ذلك ، يمكنك وكيل النتيجة. قم بإنشاء نقطة نهاية على الخادم الخاص بك ، واجعل نقطة النهاية هذه تفتح اتصالًا بنقطة النهاية المستهدفة ، وقم ببساطة بتوجيه حركة مرور إلى الوراء.

أما بالنسبة للسؤال الثاني - يمكنك استخدام العابث المرشحات لتحديد الاستجابة X-Frame-Options رأس يدويًا لشيء مثل ALLOW-FROM *. ولكن ، بالطبع ، لن تعمل هذه الخدعة إلا من أجلك - لا يزال المستخدمون الآخرون قادرين على رؤية محتوى iframe (إذا لم يفعلوا نفس الشيء).

نعم Fiddler هو خيار بالنسبة لي:

  1. فتح قائمة Fiddler> القواعد> تخصيص القواعد (هذا التعديلات بفعالية CustomRules.js).
  2. ابحث عن الوظيفة OnBeforeResponse
  3. أضف الأسطر التالية:

    oSession.oResponse.headers.Remove("X-Frame-Options");
    oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
    
  4. تذكر أن تحفظ البرنامج النصي!
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top