2

AJAX Web アプリ (および将来的にはネイティブ クライアント) の SessionAuthentication、TokenAuthentication、および OAuth2Authentication 用に Django REST API を構成しました。

トークンと OAuth2 認証は正常に機能しますが、SessionAuthentication の動作はまだ希望どおりに機能していません。

現在、同じ構成の 2 つの REST API があります。

http://api.sandbox.dev:8080/およびhttp://www.sandbox.dev:8080/api/

私の AJAX Web アプリはhttp://www.sandbox.dev:8080にあります。

コード:

www.sandbox.dev から api.sandbox.dev の API への AJAX 呼び出しを行うたびに、「403 Forbidden」エラーが発生します。物事をクロスドメインで機能させるためにすべての正しいことをしたと思いますか、それとも何か不足していますか?

ヘルプやヒントをお寄せいただきありがとうございます。

よろしく、 クリストフ

4

2 に答える 2

3

それを提供するために Apache mod_wsgi を使用している場合、認証ヘッダーが mod_wsgi によって削除されるため、VirtualHost 構成ファイルに次を追加する必要がある場合があります。以下を VirtualHost 構成に追加する必要があります。

WSGIPassAuthorization On

詳細な参照: http://django-rest-framework.org/api-guide/authentication.html#unauthorized-and-forbidden-responses

于 2013-10-05T19:47:59.877 に答える
2

これはうまくいくはずです:

jquery.rest.js

$.ajax({
    xhrFields: {withCredentials: true},
    ...
});

settings.py:

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = ('www.sandbox.dev:8080', )

SESSION_COOKIE_DOMAIN = '.sandbox.dev'
CSRF_COOKIE_DOMAIN = '.sandbox.dev'
于 2013-10-06T18:23:24.330 に答える