環境
PHP 7系
JavaScript (Pure)
Docker
HAProxy 2.2
VSCode Remote Container
小さい Web システムプロジェクトなので、APIを作成するためのライブラリ等は使っていない。
発生した問題
echo json_encode($data);
という簡単なコードで、APIを作成していた。
小さいプロジェクトなので、APIを作成するためのライブラリ等は使っていない。
比較的短いJSONを出力すると、APIから返却されたJSONが途中で切れてしまうバグに遭遇した。
{"locale": "ja-JP"}
これぐらいだと {"locale":
のように切れてしまう。これが
{"locale": "ja-JP", "dummy": "なんでなんだろうなああああああああああああ"}
のように長いJSONを返すと、切れないで表示される。(JavaScriptが正常にパースできる。)
原因
header('Content-Type: application/json');
echo('{"locale": "ja-JP"}');
このように、echoする前にヘッダを設定する必要があった。ちなみに実際には、JavaScriptのコールバックが必要なJSONPコールだったので、 application/javascript
にした。
コメント
あまり使ったことのないHAProxyのせいだと思い込み、かつ似たようなIssueが過去に報告されていたのでかなりはまりました。