【PHP】httpsのサイトでhttpのサイトをiframeで表示させる

ブラウザの仕様変更で悩んだお話

とある日、社内で使用している自社製グループウェアにて画面が一部表示されない症状が発生。

調べてみるとiframeで表示させている部分だったのですが、表示されるやつとされないやつがある。。。

どうやらchromeさんがアップデートされてhttpのサイトは拒否しているようでした。

2019年頃からブロックするようになっていたようですが、こちらの環境では2023年になって発生しております。

chromeさんの設定で強制的に許可するようにすることもできそうですが今後どんなアップデートがあるかわからないのでできればHP側でどうにかしたい。

対象のページは社内サーバ上にあります。

SSL化してあげるのが一番なんですが、CentOS6系とサーバも古く一度断念した経緯もあったのでどうにかそのままで表示しようと頑張ってみました。

スポンサーリンク

HTTP_Request

HTML内でiframeのhttpが拒否されてしまうためPHPで無理やり表示するようにします。

Request.php
https://www.php.net/manual/ja/reserved.variables.request.php

require_once "HTTP/Request.php";
$url = "http://xxx.xxx/test.php";
$option = array(
	"timeout" => 30,
	"readTimeout" => array(30, 0)
);
$request = &new HTTP_Request($url, $option);
$result = $request->sendRequest();
if(!PEAR::isError($result)){
	$data = $request->getResponseBody();
}
echo $data;

HTTP_Requestの機能を使って指定のページを読み込んで出力してあげます。

結果的に表示はできるようになったのですが、通信量増加で表示スピードが遅くなり新たな苦情が発生しました。

iframeを使用しているのはTOPだけで5ページほどですが体感で2~3秒遅い気がする。。。

ということで表示先に出力用のPHPを作成して下記のように記述しました。

<iframe loading="lazy" src="https://xxx.jp/show_test.php">
</iframe>

「loading=”lazy”」をセットすることで遅延読み込みしてくれるので表示スピードもなんとか改善できました。

どうしてもSSL化に対応できない際はお試しください。

コメント

タイトルとURLをコピーしました