Итак, проблема в том, что всякий раз, когда я делаю POST-запрос через многостраничную форму, он выдает ошибку 404 при производстве (aws ec2 с nginx в качестве обратного прокси), но отлично работает на localhost.
Моя форма выглядит так:
<form name="sell" method="POST" action="/item/sell/?_csrf=<%=locals.csrfToken%>" enctype="multipart/form-data" autocomplete="off" class="form" role="form">
<div class="form-group">
<input name="name" class="form-control" placeholder="Enter the item name" required type="text">
</div>
<div class="form-group">
<textarea name="description" class="form-control" placeholder="Enter the item description" required type="text" rows="5" cols="30"></textarea>
</div>
<div class="form-group">
<input type="number" name="price" min="1" class="form-control" placeholder="Enter the item price" required>
</div>
<div class="form-group">
<button class="btn btn-danger btn-sm" type="submit">Submit</button>
</div>
</form>
(и я не включил скрытый ввод csrf в форму).
Если я удалю enctype multipart из формы, удалите файл input, включите скрытый ввод для токена csrf и сделайте action="/item/sell"
, тогда он отлично работает даже на производстве. Это дает мне уверенность в том, что ошибка 404 связана с многокомпонентным кодированием.
Но я не могу понять, в чем причина этого, я пытался удалить nginx, но это тоже не похоже, работает.
Единственное, что я обнаружил относительно составных форм, это то, что вам нужно включить токен csrf в action
attr формы вместо того, чтобы предоставлять его в качестве входных данных. Я не знаю, что еще можно сделать, чтобы это работало.