मैं यहाँ किसी को भी एक अद्यतन उत्तर शामिल करना चाहता था जो इस लिंक को पाता है जब यह पता लगाने की कोशिश की जा रही है कि कैसे आपके रेल एप्लिकेशन को आई-फ्रेम में एम्बेड करने और मुद्दों में चलने की अनुमति दी जाए।
यह लिखने के रूप में, 28 मई 2020, एक्स-फ्रेम-ऑप्शंस परिवर्तन शायद आपकी समस्या का सबसे अच्छा समाधान नहीं हैं। "ALLOW-FROM" विकल्प सभी प्रमुख ब्राउज़रों द्वारा पूरी तरह से बंद कर दिया गया है।
आधुनिक समाधान एक सामग्री-सुरक्षा-नीति को लागू करना और एक 'फ्रेम_सैंस्टर्स' नीति निर्धारित करना है। 'Frame_ancestors' कुंजी बताती है कि डोमेन आपके ऐप को iframe के रूप में एम्बेड कर सकता है। यह वर्तमान में प्रमुख ब्राउज़रों द्वारा समर्थित है और आपके एक्स-फ्रेम-ऑप्शंस को ओवरराइड करता है। यह आपको क्लिकजैकिंग को रोकने की अनुमति देगा (जो कि एक्स-फ्रेम-ऑप्शंस का मूल रूप से मदद करना था, इससे पहले कि यह बड़े पैमाने पर पदावनत हो जाए) और एक आधुनिक वातावरण में अपने ऐप को बंद कर दें।
आप एक आरंभिक (उदाहरण के नीचे) में रेल 5.2 के साथ एक कंटेंट-सिक्योरिटी-पॉलिसी सेट कर सकते हैं, और रेल्स <5.2 के लिए आप सिक्योर हेडर्स मणि जैसे रत्न का उपयोग कर सकते हैं: https://github.com/github/secure_headers
यदि आप चाहें, तो आप एक नियंत्रक / कार्रवाई के आधार पर नीति विनिर्देशों को भी ओवरराइड कर सकते हैं।
सामग्री-सुरक्षा-नीतियां उन्नत सुरक्षा सुरक्षा के लिए महान हैं। उन सभी चीज़ों की जाँच करें जिन्हें आप रेल डॉक्स में कॉन्फ़िगर कर सकते हैं: https://edgeguides.rubyonrails.org/secin.html
सामग्री-सुरक्षा-नीति के लिए एक रेल 5.2 उदाहरण:
Rails.application.config.content_security_policy do |policy|
policy.frame_ancestors :self, 'some_website_that_embeds_your_app.com'
end
नीति में नियंत्रक विशिष्ट परिवर्तन का एक उदाहरण:
class PostsController < ApplicationController
content_security_policy do |p|
p.frame_ancestors :self, 'some_other_website_that_can_embed_posts.com'
end
end