"এক্স-ফ্রেম-বিকল্পগুলির দ্বারা নিষিদ্ধ প্রদর্শন" কাটিয়ে ওঠা


419

আমি একটি ক্ষুদ্র ওয়েবপৃষ্ঠা লিখছি যার উদ্দেশ্য কয়েকটি অন্যান্য পৃষ্ঠাগুলি ফ্রেম করা, কেবল দেখার সহজলভ্যতার জন্য এগুলিকে একক ব্রাউজার উইন্ডোতে একীকরণ করা। আমি কয়েকটি পৃষ্ঠাগুলি ফ্রেম করার জন্য বারণ করার চেষ্টা করছি এবং একটি "নথি প্রদর্শন করতে অস্বীকার করেছি কারণ এক্স-ফ্রেম-বিকল্পগুলির দ্বারা প্রদর্শন নিষিদ্ধ"। ক্রোমে ত্রুটি। আমি বুঝতে পারি যে এটি একটি সুরক্ষার সীমাবদ্ধতা (সঙ্গত কারণে), এবং এটি পরিবর্তন করার অ্যাক্সেস নেই।

এক্স-ফ্রেম-অপশন শিরোলেখ দ্বারা ছিটানো যাবে না এমন একক উইন্ডোতে পৃষ্ঠাগুলি প্রদর্শনের জন্য কি বিকল্প ফ্রেমিং বা নন-ফ্রেমিং পদ্ধতি রয়েছে?


117
যদি সেগুলি আপনার পৃষ্ঠাগুলি হয় তবে ফ্রেম সীমাবদ্ধকারীটিকে সরিয়ে দিন। অন্যথায়, পৃষ্ঠার লেখকের ইচ্ছাকে সম্মান করুন এবং তাদের ফ্রেম করবেন না।
মার্ক বি

আপনি যদি কোনও ফেসবুক অ্যাপের জন্য এই ত্রুটিটি পেয়ে থাকেন এবং এজ্যাক্স কলগুলি ব্যবহার করে থাকেন তবে আমি কোথাও পড়েছি যে ফেসবুকটি সত্যই পছন্দ করে যে এটিজ্যাক্স যোগাযোগের জন্য # ট্যাগ ব্যবহার করা উচিত তাই আমার জন্য লিঙ্কগুলি পরিবর্তন করার চেষ্টা করুন worked
এরিক.িহজাক

28
@ মার্কবি ক্রোম এবং ফায়ারফক্স নৈতিকভাবে মালিকানাধীন ইউআই ক্রোমে অ-মালিকানাধীন ওয়েবসাইটগুলি ফ্রেম করে। এই প্রোগ্রামগুলি এফআইডাব্লুআইডাব্লু তাদের মালিকদের জন্য শিথিল সম-উত্স নীতিগুলিও মঞ্জুরি দেয়। যেমন গ্যারেন-চেকলি বলেছে, "আমি একটি ক্ষুদ্র ওয়েবপৃষ্ঠা লিখছি যার উদ্দেশ্য হল কয়েকটি আরও পৃষ্ঠাগুলি ফ্রেম করা, দেখার সহজলভ্যতার জন্য কেবল তাদের একক ব্রাউজার উইন্ডোতে একীকরণ করা" " এটি মূলত ওয়েব ব্রাউজারকে প্রসারিত করে এবং এটি সম্পূর্ণ নৈতিক হবে। বর্ণিত উদ্দেশ্যটি ব্রাউজার উইন্ডোগুলি খুলতে এবং সাজানোর জন্য ব্যাশ স্ক্রিপ্ট লেখার চেয়ে আলাদা নয়।
স্যামুয়েল ড্যানিয়েলসন

1
সার্ফ্লাই চেক করুন । এটি আপনার যা প্রয়োজন ঠিক তা করতে পারে।
muodov

1
@ মার্কবি এটি সহায়ক নয়। ওপি পৃষ্ঠার লেখকের ইচ্ছার যত্ন নিতে পারে না।
flarn2006

উত্তর:


211

আমার একটি অনুরূপ সমস্যা ছিল, যেখানে আমি আমাদের নিজস্ব সাইট থেকে একটি আইফ্রেমে ( রঙিনবক্সের সাথে লাইটবক্স-স্টাইলের ডায়ালগ হিসাবে ) প্রদর্শন করার চেষ্টা করছিলাম এবং যেখানে আমাদের একটি সার্ভার-প্রশস্ত "এক্স-ফ্রেম-বিকল্পগুলি সমিরিগিন" শিরোনাম ছিল উত্স সার্ভার এটি আমাদের পরীক্ষার সার্ভারে লোড হতে আটকাচ্ছে।

এটি কোথাও নথিভুক্ত বলে মনে হয় না, তবে আপনি যদি পৃষ্ঠাগুলি ইফ্রেমে চেষ্টা করতে চান তবে সম্পাদনা করতে পারেন (উদাহরণস্বরূপ, সেগুলি আপনার নিজের পৃষ্ঠা), কেবলমাত্র সমস্ত অক্ষম করে কোনও স্ট্রিং সহ অন্য এক্স-ফ্রেম-বিকল্প শিরোনাম প্রেরণ করতে পারেন সমিরিগিন বা ডেনি কমান্ড।

যেমন। পিএইচপি জন্য, নির্বাণ

<?php
    header('X-Frame-Options: GOFORIT'); 
?>

আপনার পৃষ্ঠার শীর্ষে ব্রাউজারগুলি দুটি একত্রিত করবে, যার ফলশ্রুতি শিরোনাম

X-Frame-Options SAMEORIGIN, GOFORIT

... এবং আপনাকে পৃষ্ঠাটি একটি আইফ্রেমে লোড করতে দেয়। প্রাথমিক কাজকর্ম কমান্ডটি যখন একটি সার্ভার স্তরে সেট করা হয়েছিল তখন এটি কাজ করে বলে মনে হচ্ছে এবং আপনি পৃষ্ঠা-পৃষ্ঠায় একটি ক্ষেত্রে এটি ওভাররাইড করতে চাইবেন।

শুভকামনা!


3
একটি ওয়েবসাইটের চারপাশে আমার একটা ফ্রেম ছিল। আমার ওয়েবসাইটে, আমি OAUTH এর জন্য ইনস্টাগ্রামে পুনর্নির্দেশ করছি। যেহেতু ইনস্টাগ্রাম প্রেরণ X-Frame-Options: SAMEORIGINকরে ফ্রেমের ভিতরে এটি করার কোনও উপায় নেই। আপনার অবশ্যই একটি পপআপ ব্যবহার করা উচিত।
স্টিভ টাবার

16
পিএইচপি দিয়ে নতুন header_removeফাংশনটি ব্যবহার করা আরও ভাল , আপনি যদি এটি উপলব্ধ থাকে (> = 5.3.0)।
একটি বিড়াল

11
অথবা আপনি একটি সম্পূর্ণ ডিরেক্টরি থেকে এক্স-ফ্রেম-বিকল্পগুলি সরাতে চাইলে আপনি .htaccess সম্পাদনা করতে পারেন। কেবল লাইনটি যুক্ত করুন:Header always unset X-Frame-Options
জয়

4
@ কাউকেয়: আচ্ছা হ্যাঁ, পুরো কথাটি এটি অবৈধ। এটি ব্রাউজারগুলিতে অবৈধ শিরোলেখকে উপেক্ষা করে এবং 'ব্যর্থ হওয়া উন্মুক্ত' উপর নির্ভর করে, যা অনির্দিষ্ট আচরণ এবং নির্ভর করতে খুব অস্পষ্ট। GOFORIT(বা অন্য এলোমেলোভাবে নির্বিচারে অবৈধ টোকেন) কোনও সার্ভার দ্বারা প্রয়োগ করা সুরক্ষা ব্যবস্থাটি ইচ্ছাকৃতভাবে ভঙ্গ করছে; যদি আপনার নিজের উপর সার্ভারের নিয়ন্ত্রণ থাকে (যা আপনাকে কোনও বাস্তব পাবলিক সার্ভিসের জন্য করা উচিত) তবে সঠিক কাজটি হ'ল সার্ভারকে প্রথম স্থানে হেডার সেট না করে সেট করা উচিত।
বোবিনস

31
এটি ক্রোমে আর কাজ করবে বলে মনে হচ্ছে না। অবৈধ মানগুলি মানকে DENY এ ডিফল্ট করে দেয়।
jamesfm

159

আপনি যদি কোনও ইউটিউব ভিডিওর জন্য এই ত্রুটিটি পেয়ে থাকেন তবে সম্পূর্ণ ইউআরএল ব্যবহার না করে শেয়ার বিকল্পগুলি থেকে এম্বেড ইউআরএল ব্যবহার করুন। এটা দেখতে হবেhttp://www.youtube.com/embed/eCfDxZxTBW4

আপনিও তাই হয়ে প্রতিস্থাপন watch?v=করতে embed/পারেনhttp://www.youtube.com/watch?v=eCfDxZxTBW4http://www.youtube.com/embed/eCfDxZxTBW4


14
ওহ অগ্রগতি ... আমি আশা করি তারা ত্রুটি নষ্ট হওয়ার পরিবর্তে এবং আমাকে আমার স্ক্রিপ্টগুলি পুনরায় লেখার পরিবর্তে এম্বেড পৃষ্ঠাতে পুনর্নির্দেশ করবে!
জোয়েটউইডাল

122

যদি কোনও গুগল ম্যাপ এম্বেড করার চেষ্টা করার সময় আপনি এই ত্রুটিটি পেয়ে থাকেন iframeতবে &output=embedআপনার উত্সের লিঙ্কটি যুক্ত করতে হবে।


120
এটি কেবলমাত্র একটি আইফ্রেমে গুগল মানচিত্র এম্বেড করার জন্য সত্য, এবং সাধারণ "সমাধান" নয়।
বেনিয়ামিন ওহলওয়েন্ড

17
আমাকে একটি লাইটবক্সে গুগল ম্যাপ এম্বেড করা দরকার, সুতরাং এই "সমাধান" নিখুঁত ছিল
ইউটিওয়াইল

5
আপনি যদি কোনও টুইটার ওয়েব উদ্বেগের সাথে এটি করার চেষ্টা করে থাকেন তবে এটিকে ভুলে যান। কেবল এটি খুঁজে পেতে সারা দিন বিভিন্ন লাইটবক্স প্লাগইন চেষ্টা করে হারিয়েছেন "আপনি যখন আইএফআরএম এবং উইজেটগুলির মধ্যে ইন্টেন্টের লিঙ্ক সরবরাহ করতে পারবেন, ফলস্বরূপ পৃষ্ঠাগুলি আইএফআরএমে লোড করা যায় না।" সূত্র: টুইটার ওয়েবসাইট
গুব্যাট্রন

6
আপনি পৃষ্ঠা যুক্ত করার পরেও যদি পৃষ্ঠাটি লোড করার পরে iframe src লোড করার চেষ্টা করছেন তবে এটি কাজ করবে না&output=embed
পাথফাইন্ডার

1
@ পাথফাইন্ডার এটি আমার পক্ষে কাজ করেছিল যখন পৃষ্ঠাটি লোড হওয়ার পরে আমাকে iframe এসসিআর লোড করতে সমস্যা হয়েছিল
ডেভিড সাইকস

61

আপডেট 2019: আপনি যা করতে পারেন বাইপাস X-Frame-Optionsএকটি ইন <iframe>ব্যবহার করে শুধু ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট এবং আমার এক্স-ফ্রেম-বাইপাস ওয়েব অংশটি। এখানে একটি ডেমো রয়েছে: একটিতে হ্যাকার নিউজX-Frame-Bypass । (ক্রোম এবং ফায়ারফক্সে পরীক্ষিত))


3
এটি একটি আকর্ষণীয় কাজ। এফএফ / ক্রোম / অপেরাতে ভাল কাজ করে তবে আইই / এজ তে কাজ করে না। যে কেউ কিছু জানে যে কি করবে?
কালেক্টর

7
এটি আর কাজ করে না। এটি " নিউজ.আইকম্বিনেটর ডটকম " কে একটি ফ্রেমে প্রদর্শন করতে অস্বীকৃতি দেয় কারণ এটি 'এক্স-ফ্রেম-বিকল্পগুলি' 'ডেনি'তে সেট করে। " প্রত্যাশিত হিসাবে
g.pickardou

2
@ g.pickardou এটি গুগল ক্রোমে 46 এ আমার জন্য কাজ করে, আমি হ্যাকার নিউজটি ইফ্রেমে দেখতে পারি।
নিিউটেক

1
@niutech যে ক্রিম 64৪ পৃষ্ঠায় পৃষ্ঠাটি পুনরায় লোড করার পরে ফিজল কাজ করে, তবে আমি প্রথমবার পৃষ্ঠাটি লোড করলে এটি কার্যকর হয় না। (ছদ্মবেশে চেষ্টা করুন))
কার্ল ওয়ালশ

1
ধন্যবাদ, এটি দুর্দান্ত!
অ্যান্ড্রু গ্যান্স

23

সংযোজন ক

  target='_top'

ফেসবুক ট্যাবে আমার লিঙ্কটি আমার জন্য সমস্যাটি স্থির করে ...


1
অন্য একই আইফ্রেমে থাকা পেপাল আইফ্রেমে আমার একই সমস্যা ছিল। এটা এখন কাজ করে! ধন্যবাদ
ফ্যাবরিজিও ফোর্টিনো

4
আমি টার্গেট = '_ শীর্ষ' যোগ করেছি, তবে এই সমাধানটির সাথে সমস্যাটি হ'ল লিঙ্কটি এখন ফেসবুকের ক্যানভাস ছাড়াই নতুন ট্যাবে iframe এর বাইরে খোলে।
সুমিতকানোজে

23

Chrome এর জন্য একটি প্লাগইন রয়েছে, যা সেই শিরোনাম এন্ট্রি (কেবলমাত্র ব্যক্তিগত ব্যবহারের জন্য) ফেলে দেয়:

https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/reviews


@aup এটি ওয়েবপৃষ্ঠার শিরোনাম অংশে সম্ভবত কিছু সংশোধন করে।

এক্সটেনশনটি ওয়েবপৃষ্ঠায় কোনও পরিবর্তন
আনেনি

21

আপনি যদি ভিমিও সামগ্রী এম্বেড করার চেষ্টা করে এই ত্রুটিটি পেয়ে থাকেন তবে, iframe এর এসসিআর পরিবর্তন করুন

: https://vimeo.com/63534746
থেকে: http://player.vimeo.com/video/63534746


এটি আমার সমস্যার সমাধান করেছে, থ্যাঙ্কিওউ। ইউটিউব ভিডিও দিয়ে কি করবেন ??
হরিশ

13

আমি ইফ্রেমে মোডেল 2 এম্বেড করার চেষ্টা করার সময় আমার একই সমস্যা ছিল, সমাধানটি রয়েছে Site administration ► Security ► HTTP securityএবং পরীক্ষা করুনAllow frame embedding


মুডল পদ্ধতির জন্য ভাল কাজ করা হয়েছে, যেহেতু অন্যান্য পদ্ধতিগুলি ব্যর্থ হয় / ওভাররাইট হয়ে যায়।
এরিকসগ

7

এই সমাধান ছেলেদের !!

FB.Event.subscribe('edge.create', function(response) {
    window.top.location.href = 'url';
});

ফেসবুক অ্যাপ্লিকেশনগুলির জন্য একমাত্র কাজ!


6

এটি প্রদর্শিত হয় যে এক্স-ফ্রেম-বিকল্পগুলি https: // ... এর মঞ্জুরি দেয় এবং তাকে পরিবর্তিত করে (এবং উপেক্ষা করা হয়) পরিবর্তিত হয় (যদি আপনি এর পরিবর্তে সামগ্রী-সুরক্ষা-নীতি শিরোনাম ব্যবহার করেন)।

এখানে পূর্ণ রেফারেন্সটি দেওয়া হয়েছে: https://content-security-policy.com/


6

কোনও আইফ্রেমে বহিরাগত ওয়েবসাইট লোড করার জন্য সমাধান এক্স-ফ্রেম বিকল্পটি বাহ্যিক ওয়েবসাইটে অস্বীকার করার জন্য সেট করা হয়েছে।

আপনি যদি অন্য কোনও ওয়েবসাইটকে আইফ্রেমে লোড করতে চান এবং Display forbidden by X-Frame-Options”ত্রুটিটি পান তবে আপনি সার্ভার সাইড প্রক্সি স্ক্রিপ্ট তৈরি করে বাস্তবে এটি কাটিয়ে উঠতে পারেন।

srcআইফ্রেম এর অ্যাট্রিবিউট একটি URL ভালো খুঁজছেন হতে পারে:/proxy.php?url=https://www.example.com/page&key=somekey

তারপরে প্রক্সি.এফপি দেখতে এমন কিছু দেখবে:

if (isValidRequest()) {
   echo file_get_contents($_GET['url']);
}

function isValidRequest() {
    return $_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['key']) && 
    $_GET['key'] === 'somekey';
}

এটি ব্লকটি অতিক্রম করে, কারণ এটি কেবল একটি জিইটি অনুরোধ যা সম্ভবত ব্রাউজারের একটি সাধারণ পৃষ্ঠা পরিদর্শন হতে পারে।

সচেতন থাকুন: আপনি এই স্ক্রিপ্টটিতে সুরক্ষা উন্নতি করতে চাইতে পারেন। কারণ হ্যাকাররা আপনার প্রক্সি স্ক্রিপ্টের মাধ্যমে ওয়েবপৃষ্ঠায় লোড করা শুরু করতে পারে।


আমি কয়েক সপ্তাহ আগে এটি করছিলাম এবং প্রতিধ্বনি ব্যবহার করার সময় বাহ্যিক পৃষ্ঠায় যে কোনও সম্পর্কিত ইউআরএল ব্যবহার করা হয় না। (সাধারণত সিএসএস এবং / অথবা জেএস, যাতে প্রতিধ্বনির আগে আপনি ইউআরএলগুলি সংশোধন না করে আপনি সম্পূর্ণ কার্যকারিতা পাবেন না)) যদি আমি কিছু মিস না করি ...,
আলট্রাজেক

আপনার জন্য কেন এটি ঘটে তা নিশ্চিত নন ... এটি কোনও ইউআরএল পরিদর্শন করার সময় একজন শেষ-ব্যবহারকারী যেমন করত তেমন একটি সাধারণ এইচটিটিপি অনুরোধের মতো কাজ করা উচিত। সুতরাং get_file_contents () এর ফলাফলটি একটি সম্পূর্ণ কার্যকারী HTML পৃষ্ঠা হওয়া উচিত।
ফ্লোরিস

5

আমি প্রায় সব পরামর্শ চেষ্টা করেছিলাম। তবে, একমাত্র বিষয় যা সত্যই সমস্যার সমাধান করেছিল তা হ'ল:

  1. .htaccessআপনার পিএইচপি ফাইলটি যেখানে রয়েছে ঠিক একই ফোল্ডারে একটি তৈরি করুন ।

  2. এই লাইনটি এইচটিসেসিতে যুক্ত করুন:

    Header always unset X-Frame-Options

অন্য ডোমেন থেকে একটি iframe দ্বারা পিএইচপি এম্বেড করার পরে কাজ করা উচিত।

অতিরিক্ত হিসাবে আপনি আপনার পিএইচপি ফাইলের শুরুতে যুক্ত করতে পারেন:

header('X-Frame-Options: ALLOW');

যা আমার ক্ষেত্রে প্রয়োজনীয় ছিল না।



4

মিডিয়াউইকি নিয়ে আমারও একই সমস্যা ছিল, এটি কারণটি ছিল যে নিরাপত্তার কারণে সার্ভারটি পৃষ্ঠাটি একটি আইফ্রেমে এম্বেড করা অস্বীকার করেছিল।

আমি এটি লেখার সমাধান

$wgEditPageFrameOptions = "SAMEORIGIN"; 

মিডিয়াউইকি পিএইচপি কনফিগারেশন ফাইলের মধ্যে।

আশা করি এটা সাহায্য করবে.


3

FWIW:

আমাদের এমন পরিস্থিতি হয়েছিল যেখানে আমাদের মারতে হবে iFrame এই "ব্রেকার" কোডটি প্রকাশিত হওয়ার সময় হবে। সুতরাং, আমি পিএইচপি ব্যবহার করে function get_headers($url);এটির মধ্যে দূরবর্তী ইউআরএলটি দেখানোর আগে এটি পরীক্ষা করে দেখলাম iFrame। আরও ভাল পারফরম্যান্সের জন্য, আমি ফলাফলগুলিকে একটি ফাইলে ক্যাশে করেছি যাতে আমি প্রতিবার এইচটিটিপি সংযোগ তৈরি করিনি।


3

আমি টমক্যাট 8.0.30 ব্যবহার করছিলাম, কোনও প্রস্তাবনা আমার পক্ষে কার্যকর হয়নি। যেহেতু আমরা আপডেটটি আপডেট করতে X-Frame-Optionsএবং এটিতে সেট করতে ALLOWচাইছি, এখানে এমফ্রেড আইফ্রেমেসকে অনুমতি দেওয়ার জন্য আমি কীভাবে কনফিগার করেছি:

  • টমক্যাট কনফার্ট ডিরেক্টরিতে নেভিগেট করুন, ওয়েব.এক্সএমএল ফাইল সম্পাদনা করুন
  • নীচের ফিল্টার যুক্ত করুন:
<filter>
            <filter-name>httpHeaderSecurity</filter-name>
            <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
                   <init-param>
                           <param-name>hstsEnabled</param-name>
                           <param-value>true</param-value>
                   </init-param>
                   <init-param>
                           <param-name>antiClickJackingEnabled</param-name>
                           <param-value>true</param-value>
                   </init-param>
                   <init-param>
                           <param-name>antiClickJackingOption</param-name>
                           <param-value>ALLOW-FROM</param-value>
                   </init-param>
            <async-supported>true</async-supported>
       </filter>

       <filter-mapping>
                   <filter-name>httpHeaderSecurity</filter-name>
                   <url-pattern>/*</url-pattern>
                   <dispatcher>REQUEST</dispatcher>
       </filter-mapping> 
  • টমক্যাট পরিষেবাটি পুনরায় চালু করুন
  • একটি আইফ্রেম ব্যবহার করে সংস্থানগুলিতে অ্যাক্সেস করুন।

2

একমাত্র প্রশ্ন যার একগুচ্ছ উত্তর রয়েছে। সময়সীমার দিন রাত সাড়ে ১০ টায় এটিকে কাজ করার জন্য আমি যখন এই স্ক্র্যাম্বিং করছিলাম তখন আমি চাইতাম যে গাইডটির ওয়েলকাম ... এফবি ক্যানভাস অ্যাপ্লিকেশন সহ কিছু অদ্ভুত কাজ করে এবং ভাল, আপনাকে সতর্ক করে দেওয়া হয়েছে। আপনি যদি এখনও এখানে থাকেন এবং আপনার কাছে একটি রেল অ্যাপ্লিকেশন রয়েছে যা একটি ফেসবুক ক্যানভাসের পিছনে প্রদর্শিত হবে, তবে আপনার প্রয়োজন হবে:

Gemfile:

gem "rack-facebook-signed-request", :git => 'git://github.com/cmer/rack-facebook-signed-request.git'

কনফিগ / facebook.yml

facebook:
  key: "123123123123"
  secret: "123123123123123123secret12312"

কনফিগ / application.rb

config.middleware.use Rack::Facebook::SignedRequest, app_id: "123123123123", secret: "123123123123123123secret12312", inject_facebook: false

কনফিগ / initializers / omniauth.rb

OmniAuth.config.logger = Rails.logger
SERVICES = YAML.load(File.open("#{::Rails.root}/config/oauth.yml").read)
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, SERVICES['facebook']['key'], SERVICES['facebook']['secret'], iframe:   true
end

application_controller.rb

before_filter :add_xframe
def add_xframe
  headers['X-Frame-Options'] = 'GOFORIT'
end

ফেসবুকের ক্যানভাস সেটিংস থেকে কল করার জন্য আপনার একটি নিয়ামক প্রয়োজন, আমি এই অ্যাপ্লিকেশনটির জন্য /canvas/রুটটিকে প্রধান করেছিলাম এবং তৈরি করেছি SiteController:


class SiteController < ApplicationController
  def index
    @user = User.new
  end
  def canvas
    redirect_to '/auth/failure' if request.params['error'] == 'access_denied'
    url = params['code'] ? "/auth/facebook?signed_request=#{params['signed_request']}&state=canvas" : "/login"
    redirect_to url
  end
  def login
  end
end

login.html.erb


<% content_for :javascript do %>
  var oauth_url = 'https://www.facebook.com/dialog/oauth/';
  oauth_url += '?client_id=471466299609256';
  oauth_url += '&redirect_uri=' + encodeURIComponent('https://apps.facebook.com/wellbeingtracker/');
  oauth_url += '&scope=email,status_update,publish_stream';
console.log(oauth_url);
  top.location.href = oauth_url;
<% end %>

সোর্স

  • আমার মনে হয় যে কনফিগারেশনটি সর্বজনীন উদাহরণ থেকে এসেছে।
  • রত্ন ফাইল (যা কী !!!) এসেছে: স্লাইডসারে জিনিসগুলি আমি শিখেছি ...
  • এই স্ট্যাক প্রশ্নটিতে পুরো এক্সফ্রেম এঙ্গেল ছিল, সুতরাং আপনি যদি অ্যাপ্লিকেশন নিয়ামককে এই শিরোলেখ না রাখেন তবে আপনি একটি ফাঁকা জায়গা পাবেন।
  • এবং আমার মানুষ @ আরাফমগনা এই হিরকু গাইডটি লিখেছেন , যা আপনি এখন এই উত্তর এবং রাক্ষসগুলির কাঁধে আপনি যে পদক্ষেপে চলেছেন সেগুলি দিয়ে রেলের জন্য গ্রহণ করতে পারেন।

2

টার্গেট = _ পিতা বা মাতা '

কেভিন ভেল্লার ধারণাটি ব্যবহার করে, আমি পেপালের বোতাম জেনারেটরের দ্বারা তৈরি উপাদানগুলিতে সেই বৈশিষ্ট্যটি যুক্ত করার চেষ্টা করেছি। আমার জন্য কাজ করেছেন যাতে পেপাল কোনও নতুন ব্রাউজার উইন্ডো / ট্যাবে না খোল open


দুর্ভাগ্যক্রমে এটি সাফারিটির জন্যও কাজ করবে বলে মনে হয় না।
ওয়াটওয়ার

1

এটি কতটা প্রাসঙ্গিক তা আমি নিশ্চিত নই, তবে আমি এটির জন্য একটি কাজ তৈরি করেছি। আমার সাইটে, আমি একটি মডেল উইন্ডোতে লিঙ্কটি প্রদর্শন করতে চেয়েছিলাম যাতে URL টি লোড হওয়া একটি iframe রয়েছে।

আমি যা করেছি তা হল, আমি লিঙ্কটির ক্লিক ইভেন্টটিকে এই জাভাস্ক্রিপ্ট ফাংশনটির সাথে সংযুক্ত করেছি। এই সমস্ত কিছুই হ'ল কোনও পিএইচপি ফাইলটিতে একটি অনুরোধ করা যা মডেল উইন্ডোর মধ্যে URL টি লোড করতে হবে বা পুনঃনির্দেশ করা উচিত কিনা তা সিদ্ধান্ত নেওয়ার আগে এক্স-ফ্রেম-বিকল্পগুলির জন্য ইউআরএল শিরোনামগুলি পরীক্ষা করে।

ফাংশনটি এখানে:

  function opentheater(link, title){
        $.get( "url_origin_helper.php?url="+encodeURIComponent(link), function( data ) {
  if(data == "ya"){
      $(".modal-title").html("<h3 style='color:480060;'>"+title+"&nbsp;&nbsp;&nbsp;<small>"+link+"</small></h3>");
        $("#linkcontent").attr("src", link);
        $("#myModal").modal("show");
  }
  else{
      window.location.href = link;
      //alert(data);
  }
});


        }

এখানে পিএইচপি ফাইল কোড যা এটি পরীক্ষা করে:

<?php
$url = rawurldecode($_REQUEST['url']);
$header = get_headers($url, 1);
if(array_key_exists("X-Frame-Options", $header)){
    echo "nein";
}
else{
    echo "ya";
}


?>

আশাকরি এটা সাহায্য করবে.


1

ওয়ার্ডপ্রেস ওয়েব সাইট চালানোর সময় আমি এই সমস্যাটি জুড়ে এসেছি। আমি এটি ঠিক করার জন্য সমস্ত ধরণের জিনিস চেষ্টা করেছিলাম এবং কীভাবে নিশ্চিত ছিলাম না, শেষ পর্যন্ত বিষয়টি হ'ল কারণ আমি মুখোশের সাথে ডিএনএস ফরোয়ার্ড ব্যবহার করছিলাম এবং বাহ্যিক সাইটগুলির লিঙ্কগুলি সঠিকভাবে মোকাবেলা করা হচ্ছে না। অর্থ্যাৎ আমার সাইটটি http: //123.456.789/index.html এ হোস্ট করা হয়েছিল তবে এটি http://somewebSite.com/index.html এ চালানোর জন্য মুখোশযুক্ত ছিল । যখন আমি ব্রাউজারে http: //123.456.789/index.html প্রবেশ করলাম তখন সেই একই লিঙ্কগুলিতে ক্লিক করার ফলে জেএস কনসোলে কোনও এক্স-ফ্রেম-উত্স সমস্যা নেই, তবে চলছে http://somewebSite.com/index.htmlকরেছিল. সঠিকভাবে মুখোশ দেওয়ার জন্য আপনাকে অবশ্যই আপনার হোস্টের ডিএনএস নেম সার্ভারগুলি আপনার ডোমেন পরিষেবাতে যুক্ত করতে হবে, যেমন গডাড্ডি ডট কমের নাম সার্ভার থাকতে হবে, এনএস 1.ডিজিটালোসন ডটকম, এনএস 2.ডিজিটালোসন ডটকম, এনএস 3.ডিজিটালোসন ডটকম, আপনি যদি ছিলেন ডিজিটালওশন ডটকমকে আপনার হোস্টিং পরিষেবা হিসাবে ব্যবহার করছে।


1
আমি remove_action( 'admin_init', 'send_frame_options_header',10);এই কাজটি শেষ করেছি: এই সমস্যাটিকে বাইপাস করতে ...
মজিক

1

অবাক করা বিষয় যে এখানকার কেউ কখনও Apacheসার্ভারের সেটিংস ( *.confফাইল) বা .htaccessফাইলটিকে নিজেরাই এই ত্রুটির কারণ হিসাবে উল্লেখ করেন নি। আপনার .htaccessবা Apacheনিম্নলিখিত কনফিগারেশন ফাইলগুলির সন্ধান করুন যাতে আপনার নিম্নলিখিতগুলিতে সেট না থাকে DENY:

Header always set X-Frame-Options DENY

এটিতে পরিবর্তন করা SAMEORIGIN, জিনিসগুলি প্রত্যাশার মতো কাজ করে:

Header always set X-Frame-Options SAMEORIGIN


এটা আগে উল্লেখ করা হয়েছে - উত্তরে @Jay থেকে মন্তব্য দেখুন stackoverflow.com/a/6767901/1875965
সান্ড্রা

আমি কনফিগার করেছি। কনফ ফাইল ফাইল শিরোনাম সবসময় এক্স-ফ্রেম-বিকল্পগুলি সেমরিগিন সেট করে!
গীকহ্যাডস

তবে এখানে এই প্রশ্নের সাথে কীভাবে প্রাসঙ্গিক, যেখানে শিরোনামটি বিদেশী সার্ভারগুলি থেকে সরাসরি ক্লায়েন্টের কাছে আসে , IOW আপনার নিজের সার্ভারটিও এতে জড়িত নয়? আমি কিছু অনুপস্থিত করছি?
জেড

1

একমাত্র আসল উত্তর, যদি আপনি যদি আপনার সোর্সে আপনার হেডারে নিয়ন্ত্রণ করতে না পারেন তবে আপনি যদি নিজের আইফ্রেমে চান তবে তা প্রক্সি করা উচিত। কোনও সার্ভারকে ক্লায়েন্ট হিসাবে কাজ করতে হবে, উত্সটি গ্রহণ করুন, সমস্যাযুক্ত শিরোনামগুলি সরিয়ে দিন, প্রয়োজনে সিওআরএস যুক্ত করুন এবং তারপরে আপনার নিজের সার্ভারকে পিং করুন।

এই জাতীয় প্রক্সি কীভাবে লিখবেন তা ব্যাখ্যা করার জন্য আরও একটি উত্তর রয়েছে। এটি কঠিন নয়, তবে আমি নিশ্চিত যে এর আগে কারও এটি করা উচিত ছিল। এটি কিছুটা কারণেই খুঁজে পাওয়া ঠিক ছিল।

অবশেষে আমি কিছু উত্স পেয়েছি:

https://github.com/Rob--W/cors-anywhere/#documentation

^ পছন্দসই। আপনার যদি বিরল ব্যবহারের প্রয়োজন হয় তবে আমি মনে করি আপনি কেবল তার হিরকু অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন। অন্যথায়, এটি নিজের সার্ভারে নিজেকে চালানোর কোড। সীমা কি তা নিশ্চিত করুন।

whateverorigin.org

choice দ্বিতীয় পছন্দ, তবে বেশ পুরানো। অজগরের মধ্যে সম্ভবত নতুন পছন্দ: https://github.com/Eiledon/alloworigin allow

তারপরে তৃতীয় পছন্দ আছে:

http://anyorigin.com/

যা কিছুটা নিখরচায় ব্যবহারের অনুমতি দেয় বলে মনে হয় তবে আপনি যদি কিছু অনির্ধারিত পরিমাণ অর্থ প্রদান না করেন এবং ব্যবহার না করেন তবে আপনাকে জনসাধারণের লজ্জার তালিকায় রাখবে, যা আপনি কেবল ফি প্রদান করলে তা থেকে সরানো যেতে পারে ...


0

উল্লেখ করা হয়নি তবে কয়েকটি ক্ষেত্রে সহায়তা করতে পারে:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState !== 4) return;
    if (xhr.status === 200) {
        var doc = iframe.contentWindow.document;
        doc.open();
        doc.write(xhr.responseText);
        doc.close();
    }
}
xhr.open('GET', url, true);
xhr.send(null);

0

header()ফাংশনের পরিবর্তে নীচে দেওয়া এই লাইনটি ব্যবহার করুন ।

echo "<script>window.top.location = 'https://apps.facebook.com/yourappnamespace/';</script>";

0

আমার এই সমস্যাটি ছিল এবং এটি https.conf সম্পাদনা করে সমাধান করেছি

<IfModule headers_module>
    <IfVersion >= 2.4.7 >
        Header always setifempty X-Frame-Options GOFORIT
    </IfVersion>
    <IfVersion < 2.4.7 >
        Header always merge X-Frame-Options GOFORIT
    </IfVersion>
</IfModule>

আমি সামিরিগিনকে গোফরিত এবং সার্ভার পুনরায় চালু করেছি


-1

এই জিনিসটি চেষ্টা করে দেখুন, আমি মনে করি না যে কেউ এই বিষয়টিতে পরামর্শ দিয়েছে, এটি আপনার সমস্যার 70% মত সমাধান করবে অন্য কয়েকটি পৃষ্ঠার জন্য আপনাকে স্ক্র্যাপ করতে হবে, আমার কাছে সম্পূর্ণ সমাধান আছে তবে জনসাধারণের জন্য নয়,

আপনার iframe নীচে যোগ করুন

স্যান্ডবক্স = "একই-উত্সের অনুমতি-স্ক্রিপ্টগুলিকে অনুমতি দিন-পপআপগুলি অনুমতি দেয়"


1
স্যান্ডবক্সিং সুবিধাগুলি হ্রাস করে, এটি তাদের যুক্ত করে না। দেখতে html5rocks.com/en/tutorials/security/sandboxed-iframes
কাইলি বেকার

-1

আপনি যদি একটি সম্পূর্ণ ডিরেক্টরি থেকে এক্স-ফ্রেম-বিকল্পগুলি সরাতে চান তবে htaccess সম্পাদনা করুন।

এবং লাইনটি যুক্ত করুন: শিরোনাম সর্বদা এক্স-ফ্রেম-বিকল্পগুলি আনসেট করে না

[এর থেকে সামগ্রী: "এক্স-ফ্রেম-বিকল্পগুলির দ্বারা নিষিদ্ধ প্রদর্শন" কাটিয়ে ওঠা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.