作成した Facebook ページ タブに問題があります。
Web サイトは Chrome と Firefox では問題なく機能しますが、IE で簡単なことをしようとすると問題が発生します。
[BASE URL: http://domain.com/]
[REQ URL: http://domain.com/request]
私がやろうとしているのは、サーバーの BASE URL からサーバーへの簡単な ajax リクエストを REQ URL で再度行うことです。Chrome または Firefox では期待どおりの結果が得られますが、IE ではいくつかのエラーと警告が表示されます。
警告は次のとおりです (機密ドメイン情報なし)
SEC7118: XMLHttpRequest for https://www.facebook.com/dialog/oauth?client_id=APP_ID&redirect_uri=URL_ENCODED_REDIRECT_URI required Cross Origin Resource Sharing (CORS).
SEC7119: XMLHttpRequest for https://www.facebook.com/dialog/oauth?client_id=APP_ID&redirect_uri=URL_ENCODED_REDIRECT_URI required CORS preflight.
エラーは次のとおりです。
SEC7120: Origin http://domain.com not found in Access-Control-Allow-Origin header.
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.
私はこれらのエラーについて多くの調査を行いましたが、それらが Cross Origin Control に関連し、あるドメインから別のドメインに一致しないリクエストを行うことを知っています。奇妙なことに、両方のドメインが同じであるため、CORS は適用されません。何が欠けているのかわかりません。スタック オーバーフローに関する記事を少なくとも 20 件読んだことがありますが、どれも私の問題に正確に対処することはできません。
REQ_URL の /request/ は、コントローラーから呼び出されるメソッドです。このメソッドを呼び出すために必要なのは、特別なことは何もなく、単純な PHP 関数です。
function request() {
return 'you win!';
}
ajax は jQuery を使用してリクエストを具体的に $.get メソッドにしています。これは私のコードです。
$.get('/request', function(response){
console.log(response);
});
応答がありません。
私は $.ajax でもこれを試しました。完全なメソッドを呼び出すと、「エラー」のテキスト ステータス タイプが返されます。これは上記のエラーの結果であると予想されます。
以下の記事を読み、理解しました。
Same-origin ポリシーによれば、私は CORS に縛られるべきではなく、get リクエストは機能するはずです。または、何か不足しています。
どんな助けでも大歓迎です。
['アップデート']
上記のエラーは、Facebook (Facebook ページ タブ) 内でのみ発生することを確認しました。これは、iframe がドメイン " http://static.ak.facebook.com/ " と私のドメイン "からのものであると思われます。 http://domain.com " これは、Same-origin ポリシー ルールに違反します。ajax 呼び出しが行われると、" http://static.ak.facebook.com/ " から " http://domain.com " に送信されるため、クロスオリジン ポリシー エラーが発生するため、非常に面倒です。
この問題を解決する方法はまだわかりません。