我正在使用 Django v2.2.8 和 python 3.6.9。 我的支付网关依赖于我指定的 url,即 https://example.com/success、https://example.com/failure 交易后。 但是,我在处理这些 url 的视图上使用了 csrf_exempt,这在本地环境中工作正常,但在生产中它给出了 403 forbidden csrf 验证失败。
即使禁用整个 CSRF 中间件,错误仍然存在。
views.py
@csrf_exempt
def payu_failure(request):
data = {k: v[0] for k, v in dict(request.POST).items()}
response = payu.verify_transaction(data)
return JsonResponse(response)
来源https://github.com/renjithsraj/paywix/blob/master/PAYU.md
settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
urls.py 有正确的配置
path('failure', views.payu_failure, name='payu_failure'),