Posted at

JavaでCookieにSameSite属性をつける


概要

javax.servlet.http.CookieにはSameSite属性を付与するAPIがありません。

そんな時の対応です。

ちなみにSameSite属性はほぼ全てのブラウザが対応しています。

参考


Cookieクラスを使用せず、Set-Cookieヘッダーを使用する

Spring bootでやってみます。

@RestController

public class DemoController {

@GetMapping(value = "/")
public String index(HttpServletResponse response) {

String name = "name";
String value = "takeshi";

String cookie = String.format("%s=%s; max-age=3600; Path=/; HttpOnly; Secure; SameSite=Lax;", name, value);

response.addHeader("Set-Cookie", cookie);

return "hello, world!";
}

Screen Shot 2019-08-06 at 17.11.55.png

無事takeshiが入りました。

頻繁にCookie書き込みを行う場合は、パラメータで受け取ってセットするカスタムクラスを作った方が良さそうですね。

もしくはApacheやnginxなどのWebサーバ側で一括設定もできます。

参考


参考

Class Cookie

https://stackoverflow.com/questions/42717210/samesite-cookie-in-java-application

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie