2017-02-04 6 views
0

私はdjangoビューにデータを投稿するために使用しているワードプレスサイト(PHPでコーディングされています)を持っています。私はしかし、私はまだこれを受け、このコードcsrf_exemptデコレータは免除されていません

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $myvars); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_REFERER, 'https://mydjangosite.com/blah/blah2/'); 

機能私は、このインスタンスで

from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
@api_wrapper 
def add_referral_api(request, status_slug): 

をクロスサイトポストを許可するため、上記のURLは@csrf_exemptデコレータを使用しているために行くに投稿しますログにエラーがあります

[03/Feb/2017 18:17:48] WARNING [django.request:177] Forbidden (CSRF cookie not set.): 

信頼済みサイト間でこのようなクロスサイトポスティングを許可するにはどうすればよいですか?

EDIT 私のミドルウェアクラスも同様です。このサイトはssl証明書を使用していますので、それが価値あるものであることを覚えておいてください。余分なセキュリティによってcsrf_exemptionデコレータがうまく動作しない可能性があります。それでも、私はこの1つのサイト(私のWPサイト)が投稿データを受け取っても大丈夫だと言うことができると思います。

MIDDLEWARE_CLASSES = (
    # This middleware is for ensuring that all pages use https 
    #'djangosecure.middleware.SecurityMiddleware', 
    'django.middleware.gzip.GZipMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'common.middleware.XsSharing', 
    'impersonate.middleware.ImpersonateMiddleware', 
    'referrals.middleware.ReferralMiddleware', 
) 
+0

"api_wrapper"とは何ですか?このビューがヒットしたと確信していますか? –

+0

はい。それは、情報を投稿してレコードをデータベースに追加することです。 –

+0

'CSRF_COOKIE_SECURE'設定が' True'に設定されていますか? –

答えて

0

マットとおしゃべりをした後、我々は@api_wrapperデコレータをする犯人を発見した(ので、私の最初の直感は正しかった)、それは@csrf_exempt役に立たないレンダリング、@ensure_csrf_tokenデコレータを呼んでいたよう。 PHPコールはBad Request (400)でしたが、それはこの質問の範囲外です。

関連する問題