JavaのHTTPUrlConnectionでヘッダーに「Origin」を追加する

JavaのHTTPUrlConnectionでどうしてもステータス403エラーになってしまっている。curlコマンドでは問題なく動いているのに、その原因を調べた。

まず、 http - How to enable wire logging for a java HttpURLConnection traffic? - Stack Overflow に参考して、ソースコード

System.setProperty("javax.net.debug","all");

を追加して、実際の通信時の送信したヘッダーを調べた。そうすると、ソースコードで指定していた「Origin」ヘッダーが送信されていなかったことが判明した。

そして、

http - Java JSOUP how to send the Origin in the header - Stack Overflow に参考して、ソースコード

System.setProperty("sun.net.http.allowRestrictedHeaders", "true");

を追加したら、期待通り「Origin」ヘッダーが送信されることが確認でき、403エラーも解消した。