2

質問:
1 つのドメインからの https: と http: の両方の結果を Google カスタム検索エンジンに含め、そのような結果を安全な親ウィンドウを持つ iframe に表示するにはどうすればよいですか?


構造:
私の Google カスタム検索エンジンは現在、「mydomainname.com/directory/ 」を検索し、「アドレスにこの URL を含むすべてのページを含める」オプションを使用しています。Web サイトの特定のページで動作し、指定されたディレクトリ内のページを検索します。Websearch 設定で設定されたリンク ターゲットは、検索バーと同じページの iframe です。

ブラウザー ウィンドウと iframe src は両方とも同じ安全なドメインにあります。また、検索結果はすべてサイト構造内のディレクトリからのものであるため、すべて同じドメイン上にあります。

現在、一部の結果は「https://...」と表示され、一部は「www...」と表示されます。明らかに、ブラウザ ウィンドウが https:// で、iframe に http:// 検索結果を表示しようとすると、混合コンテンツ エラーが発生します。

もちろん、http:// である結果は、https:// URL としても機能します。ページやファイルがすべて単一の安全なドメインから発信されているのに、検索結果に「 www.」または「https:// 」と表示される理由がわかりません。

検索するサイトを として指定しても、 「http://」の結果が表示されhttps://www.mydomainname.com/directory/ます。これらの結果を排除したくはありませんが、安全にサイトを閲覧するときに表示できるようにしたいです。


目的:
したがって、回避する必要がある最終的なルールは、安全でないページまたはファイルを安全な Web ページの iframe に読み込むことができないということです。ユーザーが https:// サイトを利用できるようにしたいのは明らかですが、これらのユーザーが可能なすべての検索結果を取得できるように検索を機能させる必要があります。

結果のターゲットをこの iframe にする必要がある理由は、これが Web ページのすべてのコンテンツを表示するフレームだからです。検索結果は、他の情報の構成と調和して機能します。ページのナビゲーションでカテゴリからリンクを選択し、カスタム検索結果から検索結果を選択すると、選択したコンテンツが同じ場所 (iframe) に表示されます。


試した
こと: https:// を具体的に Google 検索エンジン (gse) の設定で指定: 'http'し、スクリプト行から削除しようとしましたgcse.src =(document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx;

リンク先のスクリプト ファイルを調べましたが、http://cse.google.com/cse.js?cx=012685392925564329750:ghl2znnfada何を変更する必要があるのか​​わかりません。

コンソールのエラー ログには、安全に閲覧しているときに安全でないページを読み込めないと予想されることを除いて、関連するものはあまりありません。しかし、(おそらく)関連しているように見えるこれがありますか?私もそれを本当に解読できないので、私は完全に間違っている可能性がありますが:

    Mixed Content: The page at
    'https://mydomainname.com/directory/index.php' was loaded over HTTPS, 
    but requested an insecure script 'http://www.google.com/jsapi?
    key=ABQIAAAAdCtw6Xq1Q31YAr7VSQOSvxS5g7WKqCWUBuUdhz3-
    rUOumR2saRSPGvey2WjYALW7f5_JzakSL3lAEg'. This request has been blocked; 
    the content must be served over HTTPS.

エラー メッセージからの安全でないスクリプト:
http://www.google.com/jsapi?key=ABQIAAAAdCtw6Xq1Q31YAr7VSQOSvxS5g7WKqCWUBuUdhz3-rUOumR2saRSPGvey2WjYALW7f5_JzakSL3lAEg


提案された解決策への道:
私は、可能なあらゆる解決方法を受け入れます。いくつかのルートを検討しましたが、それらを適切に実行する方法がわからないか、実行しようとして失敗しました。

私がうまくいくと思ったいくつかの解決策は次のとおりです。

  • サイトへの安全な接続の有無にかかわらずアクセスできるように、すべての結果を https:// リンクとして (除外せずに) 表示します。

  • https:// なしでクリックされたリンクをリダイレクトして、https:// として iframe にロードします。

  • サーバー上のページとファイルを変更して、検索結果に https:// としてのみ表示されるようにします。

  • Google の検索エンジン スクリプトを変更して、見つかったすべての結果を https:// として解析するようにします。

  • 安全でないブラウジングの場合はリンクを http:// として表示し、安全なブラウジングの場合は https:// としてリンクを表示する*

*これがどれほど実行可能または効率的かはわかりません

4

1 に答える 1

1

最も堅牢な解決策は、すべての Web サイトを https に移行することです。

  • http から https への 301 (永久) リダイレクトを使用する
  • HSTS をアクティブ化します (可能な場合は includeSubdomains を使用)

Google がインデックスを更新するのに少し時間がかかりますが、HSTS は自動的に http を https に置き換えるので、混合コンテンツの問題を回避する必要があります。

于 2015-09-11T18:26:20.483 に答える