【发布时间】:2021-05-19 10:42:35
【问题描述】:
我有一个后端 API,它在 django 中并部署在 Google Endpoint 上。 我有一个向我的数据库插入数据的发布请求。
我创建了一个脚本来使用这个端点,但是我得到了这个错误:
{"detail":"CSRF 失败:Referer 检查失败 - 没有Referer。"}
关于帖子,我在课堂上添加了 crsf_exempt 装饰器,但它没有改变。
我尝试通过两种方式添加装饰器:
class AddUser(APIView):
""" Create user and company from csv """
@method_decorator(csrf_exempt)
def post(self, request):
@method_decorator(csrf_exempt, name='dispatch')
class AddUser(APIView):
""" Create user and company from csv """
def post(self, request):
但都失败了。
这是我联系端点的方式:
resp = requests.request(
method, url,
headers={'Authorization': 'Bearer {}'.format(
open_id_connect_token)}, **kwargs)
有什么想法吗? 谢谢
编辑
所以我尝试将身份验证类添加到我的视图中,但这似乎是个坏主意。这对我来说真的很麻烦。
我试图让 csrftoken 这样做:
client = requests.session()
# Retrieve the CSRF token first
client.get(url) # sets cookie
print(client.cookies)
if 'csrftoken' in client.cookies:
# Django 1.6 and up
csrftoken = client.cookies['csrftoken']
else:
# older versions
csrftoken = client.cookies
问题是,我正在使用 IAP 来保护我的 API,我没有任何 csrftoken cookie,但我确实有一个看起来像这样的东西:
如何使用它向我的 API 发出 post 请求?
【问题讨论】:
标签: django csrf google-cloud-endpoints