環境
- PHP
- Apache
解決策
POST 先に指定している URI の末尾にスラッシュをつける。
localhost:3000/json
-> localhost:3000/json/
理由
Apache では設定によって URI に Trailing Slash と呼ばれる末尾のスラッシュが無い場合、末尾のスラッシュが存在する URI へリダイレクトさせられます。
このリダイレクトによって 'Content-Type':'application/json'
指定で POST した値が消えていました。
この設定は、 DirectorySlash ディレクティブ と呼ばれるものです。
- Trailing Slash 参照元 : https://wa3.i-3-i.info/word11910.html
- DirectorySlash ディレクティブ 参照元 1 : https://httpd.apache.org/docs/2.4/ja/mod/mod_dir.html
- DirectorySlash ディレクティブ 参照元 2 : https://www.javadrive.jp/apache/ini/index23.html
雑記
php:input
の値が空で、 以下の記事が有力な手がかりだったが、解決せず URI のスラッシュをいじったら解決した。
スラッシュ一つでかなり悩んでしまった。