環境
- Laravel 8系
- PHP 7.4
- appache
実装したいこと
ajaxを使用して非同期でPATCH処理を行いたい。
本題
$.ajax({
type: 'PATCH',
url: '/hoge_update',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: {
id: id,
item: item,
},
dataType: 'json',
}).done(function (data) {
こんな感じで非同期でPATCH処理を実装しようと思ったら、本番環境で 403 Forbidden
エラーが。
調べてみるとどうやらapache側で許可されているのが GET
POST
のみみたい(詳細はこちら)
ただssh接続の許可がなかったり本番環境に入れない場合、confファイルを直接編集できないので、
$.ajax({
type: 'POST', //POSTに変更
url: '/hoge_update',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: {
_method: 'PATCH', //PATCHを追加
id: id,
item: item,
},
dataType: 'json',
}).done(function (data) {
だいぶ無理やりですがこれでしっかり200ステータスを返してくれました。