Cloudflare Pages FunctionsのMiddlewareからCookieを読み書きする
Cookieを読む
Cookieを読むとはすなわちCookie
というHTTPリクエストのヘッダを読むことです。
ですので:
context.request.headers.get('Cookie')
と、すれば読めます。……読めてもそれだけでは;
で区切られた文字列なので、扱いやすいようにオブジェクトにしました。こんな感じです:
let cookie={
parse:(cookie)=>{
let values=cookie.split(";");
values=values.map((s)=>{return s.replace(/^\s+|\s+$/g,'')});
let ret={};
for(let i=0;i<values.length;i++){
let splitted=values[i].split('=');
let name=splitted.shift();
ret[name]=splitted.join('=');
}
return ret;
},
}
Cookieに書く
Cookieに書くためにはSet-Cookie
というHTTPレスポンスのヘッダを送り返せばいいのでレスポンスに書き込みます。
まず、そのためには途中まで出来上がってきたレスポンスが必要です。
let response=await context.next()
こうして得たレスポンスに変更を加えて(i.e.,Set-Cookie
を加えて)return
します。
response.headers.set('Set-Cookie',`name=value ;Path=/`);
たとえばこんな感じにします。