Я загружаю файл на сервер nginx
и всегда получаю ошибку Bad Request
. Сценарий Python:
async def post():
file_name = '/tmp/a.txt'
with aiohttp.ClientSession() as session:
with open(file_name, 'rb') as f:
async with session.post(url, data={'0':f}) as resp:
print(resp.status, resp.reason)
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(post())
Он печатает:
400 Плохой запрос
Файл /tmp/a.txt содержит текст
привет \ n
Журнал ошибок с моего сервера:
ModSecurity: ошибка многоэтапного анализа: Multipart: неверный заголовок Content-Disposition (-11 ): форма-данные; имя = "0"; имя файла = "a.txt"; имя файла * = UTF-8''a.txt. [hostname "www.domain.com"] [uri "/upload.php"] ModSecurity: доступ запрещен с кодом 400 (этап 2). Требуется совпадение «eq 0» с «REQBODY_ERROR». [file "/etc/httpd/modsecurity.d/00_asl_z_antievasion.conf"] [line "35"] [id "330791"] [msg "Не удалось проанализировать тело запроса. Это может быть атака несоответствия несоответствия, неработающее приложение или разорванное соединение. Это не ложное срабатывание. Проверьте приложение или клиент на наличие ошибок. "] [data" Ошибка многоэтапного анализа: Multipart: неверный заголовок Content-Disposition (-11): form-data; name = \ x220 \ x22 ; filename = \ x22a.txt \ x22; filename * = utf-8''a.txt. "] [серьезность" CRITICAL "] [тег" no_ar "] [имя хоста" www.domain.com "] [uri" / upload. php "]
Как это исправить или любой обходной путь? Я могу изменить скрипт python, но не правила безопасности на сервере.