web-dev-qa-db-ja.com

「#_ = _」が追加された奇妙なURL

可能性のある複製:
FacebookがOAuth2経由で認証した後にリダイレクトする#=を追加するPlay Framework?

他の誰かがこれが起こったことを見ましたか?

私はFacebook PHP SDKといくつかのJavaScriptを使用してFacebookキャンバスアプリを構築しています。
ユーザーにOAuth認証フローを案内すると、ブラウザのURLにこの"#_=_"が自動的に追加されるので、URLが開始することに気付きましたこのように見えます:

http://apps.facebook.com/xxxxxxxxxxxx/#_=_

アプリプロファイルページにリダイレクトすると、URLは次のようになります。

http://www.facebook.com/apps/application.php?id=xxxxxxxxxxxx#_=_

を使用してリダイレクトしています

echo "<script type='text/javascript'>top.location.href='$appcanvasurl';</script>"

キャンバスURLに、そして

echo "<script type='text/javascript'>top.location.href='$appprofurl';</script>"

アプリプロファイルページ用。

では、なぜこの#_=_が追加されるのですか?

更新:

トラッカーのこのバグ によると、これは仕様によるものであり、redirect_uriに値を指定してもこれは変わりません。

そして そのページの公式Facebook返信 によると(投稿を表示するにはFacebookにログインする必要があります):

これは、潜在的なセキュリティの脆弱性を防ぐため、「設計による」とマークされています。

一部のブラウザは、URLからのハッシュフラグメントを、リダイレクト先の新しいURLの末尾に追加します(その新しいURL自体にハッシュフラグメントがない場合)。

たとえば、example1.comがexample2.comへのリダイレクトを返す場合、example1.com#abcにアクセスするブラウザーはexample2.com#abcに移動し、example1.comのハッシュフラグメントコンテンツはexample2のスクリプトにアクセスできます。 .com。

ある認証フローを別の認証フローにリダイレクトできるため、あるアプリから別のアプリにアクセスできる機密認証データを持つことができます。

これは、新しいURLフラグメントをリダイレクトURLに追加して、このブラウザーの動作を防ぐことで軽減されます。

結果のURLの美観、つまりクライアント側の動作が問題になる場合は、window.location.hash(または独自のサーバー側リダイレクト)を使用して問題のある文字を削除することができます。

34
bool.dev

これを見てください: https://developers.facebook.com/blog/post/552/

セッションリダイレクト動作の変更

今週、フラグメントの追加を開始しました#_=_このフィールドを空白のままにすると、redirect_uriに送信されます。アプリがこの動作を処理できることを確認してください。

17
mjs