0

Apache で django-socialregistration を使用しています。このエラー メッセージが表示されるようになりました。

Invalid OpenID Namespace u'http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0'
4

1 に答える 1

0

それは、Apache 構成ファイルの書き換えルールから始まります。

<VirtualHost *:80>
  ServerName foobar.org
  ServerAlias foobar.net
  RewriteEngine On
  RewriteRule ^(.*)$ https://foobar.org$1 [R=301,L]
</VirtualHost>

したがって、foobar.net に着信する、または https を経由しないリクエストは、https://foobar.orgにリダイレクトされます。Apache がこのリダイレクトを行うとき、デフォルトでは URL をエスケープします。http://httpd.apache.org/docs/current/rewrite/flags.html#flag_neを参照してください

したがって、1つの解決策はこれを行うことです:

  RewriteRule ^(.*)$ https://foobar.org$1 [R=301,L,NE]

しかし、そもそもなぜリダイレクトが発生するのでしょうか? 私の場合、django-socialregistration が設定をチェックして、OpenID ワークフローで ssl を使用するかどうかを決定するためです。ランサーバーを見て、次のようなものを見ました

GET /openid/redirect/?openid_provider=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid&next=%2Faccounts%2Fnext%2F%3Fnext%3Dundefined

curl -v <that_url>は、 Location ヘッダー (つまり、リダイレクト URL) に次のようなものが含まれていることを確認しました。

...openid.return_to=http%3A%2F%2Ffoobar.org%2Fopeni...

https を使用していないことに注意してください。django-socialregistration を調べたところ、settings.py でこれが必要であることがわかりました。

SOCIALREGISTRATION_USE_HTTPS = True
于 2013-02-05T20:49:50.017 に答える