おうちにかえりたいブログ



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=/`);

たとえばこんな感じにします。