Snip.ly很好地檢查輸入的Web地址是否可以在iframe中使用。 我想用紅寶石複製它。查看他們的代碼,他們發送一個ajax請求到他們的服務器,並在那裏他們進行驗證。檢查url是否可以在iframe中加載
即使廣泛的谷歌搜索無法找到任何可以幫助我完成的任務。
我使用的情況是,我們讓用戶添加新聞列表到他們的頁面,這是iframe中顯示,想顯示它如果輸入的網址可以在iframe中使用。
Snip.ly很好地檢查輸入的Web地址是否可以在iframe中使用。 我想用紅寶石複製它。查看他們的代碼,他們發送一個ajax請求到他們的服務器,並在那裏他們進行驗證。檢查url是否可以在iframe中加載
即使廣泛的谷歌搜索無法找到任何可以幫助我完成的任務。
我使用的情況是,我們讓用戶添加新聞列表到他們的頁面,這是iframe中顯示,想顯示它如果輸入的網址可以在iframe中使用。
您可以通過檢查X-Frame-Options
標題來找出某些情況。但正如你在評論中提到的那樣,它並不是一直工作的。
根據我的經驗,最好完全側重解決問題。 如果您通過您的Rails服務器反向代理您的請求,那麼您可以在iframe中始終顯示任何內容。
以下是該過程的一個示例。我假設你的服務器是your-server.com
,並且用戶想要在user.com/list
上列出一個頁面。它的工作方式是:
https://user.com/list
https://user.com/list
執行HTTP請求到內容獲取這種方法幾乎一直工作,但它有其他限制: - 您應該反向代理該網頁上具有相對網址的任何資產;否則的CSS /圖像可能被打破 - 你必須在該網頁上處理Ajax請求
您可以修復這些中,通過將HTML步驟4 之前,你可以使用https://github.com/waterlink/rack-reverse-proxy步驟2和3,而不是重新實施您自己的反向代理。
你可以把它架在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
如果該頁面包含一個JS代碼,確定它是否是一個iframe中,並根據結果,以觸發AJAX請求服務器 ? – yeyo
@yeyo我並沒有完全得到你的意思 – Alfie
很多事情像Adblock的,防火牆等,可以阻止加載URL。我認爲你可以在後端做的最好的事情是向請求的url發送請求,檢查是否有任何響應,並檢查'X-Frame-Options'響應頭。它可以阻止將響應加載到iframe中。 –