Похожая проблема у меня — Cant update email via API - invalid_access error
Что я вижу в логах сервера:
Started PUT "/u/brodie-16/preferences/avatar/pick.json" for 24.17.99.993 at 2022-09-08 10:28:10 +0000
Processing by UsersController#pick_avatar as JSON
Parameters: {"upload_id"=>13, "type"=>"uploaded", "username"=>"pelican-16", "user"=>{}}
Can't verify CSRF token authenticity.
Completed 422 Unprocessable Entity in 34ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 6549)
Запрос, который я отправляю:
import requests
import json
url = "https://blah.blahblah.blah/u/brodie-16/preferences/avatar/pick.json"
payload = json.dumps({
"upload_id": 13,
"type": "uploaded"
})
headers = {
'Api-Key': 'blahblahblahblahhhhh',
'Api-Username': 'system',
}
response = requests.request("PUT", url, headers=headers, json=payload)
print(response.text)
Ответ, который я получаю от API:
{
"failed": "FAILED"
}
Я знаю, что проблема не связана с балансировщиком нагрузки или прокси, потому что это даже не работает локально с экземпляра, на котором я запускаю Discourse.
[root@ip-10-say-whatt-2 discourse]# curl --insecure --location --request PUT 'https://localhost/u/brodie-16/preferences/avatar/pick.json' \
> --header 'Api-Key: blahblah' \
> --header 'Api-Username: system' \
> --header 'Content-Type: application/json' \
> --data-raw '{
> "upload_id": 13,
> "type": "uploaded"
> }'
{"failed":"FAILED"}
Недавно кто-то другой также опубликовал это — Can't verify CSRF token authenticity while creating topics
Кто-нибудь знает, что происходит?