2017-06-16 7 views
4

Snip.lyは、入力したウェブアドレスをiframeで使用できるかどうかを確認します。 私はそれをrubyで複製したいと思います。彼らのコードを見て、彼らはサーバにajaxリクエストを送信し、検証を行う場所にAjaxリクエストを送ります。iframeにurlをロードできるかどうかを確認する

大規模な検索を行っても、それを達成するのに役立つものは見つかりませんでした。

私はユーザーにiframeに表示されているページにニュースリストを追加さ​​せ、入力したURLをiframeで使用できるようにする場合に表示したいと考えています。

+0

ページでは、それはIFRAME内で、結果に応じて、ある場合にAJAX要求を発射し、決定JSのコードが含まれている場合にどのようなサーバー ? – yeyo

+0

@yeyo私はあなたが意味するものをかなり得ていませんでした。 – Alfie

+0

Adblock、ファイアウォールなどの多くのものは、URLの読み込みをブロックすることができます。バックエンドでできることは、リクエストされたURLにリクエストを送り、レスポンスがあるかどうかを確認し、 'X-Frame-Options'レスポンスヘッダをチェックすることです。応答をiframeにロードすることをブロックすることができます。 –

答えて

0

X-Frame-Optionsヘッダーを確認することで、いくつかのケースを把握することができます。しかし、あなたがコメントで言及したように、それは常に動作しません。

私の経験では、問題をすべて一歩手を加えることが最善です。 あなたのリクエストをあなたのレールサーバーからリバースプロキシすると、あなたはいつもあなたのiframeに何かを表示することができます。

以下は、プロセスの例です。あなたのサーバーがyour-server.comで、ユーザーがuser.com/listにページをリストしたいと思っています。 、

要求インターセプト https://your-server.com/proxy?url=https://user.com/list `
  • へのiframeのsrcを設定
    1. URLを抽出します:それが動作する方法は次のようになりhttps://user.com/list
    2. コンテンツを取得するためにhttps://user.com/listにHTTPリクエストを実行する戻ることあたかも自分のサーバーから来たものであるかのようにブラウザに送信します。

    この方法はほとんどすべての場合に機能しますが、それ以外の制限があります。 - そのページの相対URLを持つアセットをリバースプロキシにする必要があります。そうでない場合は、CSS /画像は 破損する可能性が - あなたはそのページにAJAXリクエストを処理しなければなりません

    あなたがステップ2と3のためhttps://github.com/waterlink/rack-reverse-proxyを使用することができますステップ4 前にHTMLを変換することにより、同様にこれらを修正するのではなく、することができます

    独自のリバースプロキシを再実装します。あなたはconfig/application.rbに次のコードを使用してそれを設定することができ

    config.middleware.insert(0, Rack::ReverseProxy) do 
        reverse_proxy_options timeout: 10 # avoids waiting for pages that take forever to load 
        reverse_proxy(/proxy\?url=(.*)/, '$1') # reverse proxy on the url parameter 
    end 
    
  • 関連する問題