如何保护跨域POST方法?

时间:2018-10-25 13:21:33

标签: python django cors django-cors-headers

我的目标是将POST请求从second.com发送到first.com。而且我需要保护Django服务器(first.com)的安全,以允许并授权POST请求并响应second.com(Javascript client

我目前的计划是通过制作GET方法从first.com获取csrf令牌。

def api_token(request):
    csrfmiddlewaretoken = get_token(request)
    return JsonResponse({'status': True, 'csrfmiddlewaretoken': csrfmiddlewaretoken})

然后将方法发布到first.com以获得响应。

def api_res(request):
    return JsonResponse({'status': True})

这是我的js代码,

fetch("http://first.com/api/res/", {
  method: 'post',
  headers: {
    "X-CSRFToken": response.csrfmiddlewaretoken,
    "Accept": "application/json",
    "Content-Type": "application/json",
    "credentials": "include"
  },
  body: JSON.stringify({"hello": "what"})
})
.then(res => res.json())
.then(response => console.log(response))

没有错误,但api / res端点结果不起作用。意思是我在chrome开发工具中得到了Request Method: OPTIONS。请有人解释发生了什么事吗?

这是我的Djago cors设置。

CORS_ORIGIN_WHITELIST = (
    'second.com'
)

CSRF_TRUSTED_ORIGINS = [
    "second.com",
]

CORS_ALLOW_METHODS = (
    'GET',
    'POST',
)

CORS_ALLOW_CREDENTIALS = True

0 个答案:

没有答案