Facebookのhtml入力タブを使用していくつかのフォームを作成しています。私のフォームアクションは、外部でホストされているphp関数ファイルへのリンクを投稿および挿入することです。
問題は、ユーザーがFacebookの新しいhttps設定を使用していない場合、「安全でないフォーム」というポップアップが表示されることです。
外部でホストされている安全なハンドラーを提供する理由はありますか、それともこれは私がFacebookのap作成に深く入り込んだものですか?
Facebookはアプリをiframeにロードします(フォームのPOSTを使用)。ユーザーがFacebookでhttpsを使用している場合は、アプリ設定のSecure Canvas URLプロパティを使用し、ユーザーが安全なブラウジングを行っていない場合は、 CanvasURLを使用します。そのため、ページはhttpsからではなくhttpから読み込まれます。そのため、ブラウザによって警告がユーザーに表示されます。
できることは、ページがロードされているときに使用されているプロトコルを確認し、httpsでない場合は、httpsからページをリロードすることです。( window.locationオブジェクトを使用)のようなもの:
var location = window.location;
if (location.protocol != "https:") {
window.location.href = "https://" + location.host + "/" + location.pathname + location.search
}
または、クエリ文字列にURLが含まれることを期待していない場合は、次のように置き換えることができます。
window.location.href = window.location.href.replace("http", "https");