Skip to main content

Hàm setHeaders không thể được dùng với header Set-Cookie. Thay vào đó, bạn nên sử dụng API cookies.

Trong các hàm load của bạn, bạn có thể đọc cookie bằng cách sử dụng cookies.get(name, options):

src/routes/+page.server.js
export function load({ cookies }) {
	const visited = cookies.get('visited');

	return {
		visited: visited === 'true'
	};
}

Để đặt một cookie, sử dụng cookies.set(name, value, options). Khuyến khích bạn nên cấu hình rõ path (đường dẫn) khi đặt một cookie, vì hành vi mặc định của trình duyệt — hơi vô ích — là đặt cookie ở phần cha của đường dẫn hiện tại.

src/routes/+page.server.js
export function load({ cookies }) {
	const visited = cookies.get('visited');

	cookies.set('visited', 'true', { path: '/' });

	return {
		visited: visited === 'true'
	};
}

Bây giờ, nếu bạn tải lại iframe, Chào người lạ! sẽ trở thành Chào bạn!.

cookies.set(name, ...) làm tiêu đề Set-Cookie sẽ được ghi, nhưng nó cũng cập nhật bản đồ nội bộ của cookies, có nghĩa là sau đó nếu cookies.get(name) được gọi trong cùng một yêu cầu sẽ trả về giá trị đã được cập nhật. Tiến trình này như sau, API cookies sử dụng package cookie thường gặp — các tùy chọn được truyền vào cookies.getcookies.set tương ứng với các tùy chọn cho parseserialize từ tài liệu của cookie. SvelteKit đặt các giá trị mặc định sau để làm cho cookie của bạn an toàn hơn:

{
	httpOnly: true,
	secure: true,
	sameSite: 'lax'
}

Tiếp theo: module được chia sẻ

1
2
3
4
5
<script>
	export let data;
</script>
 
<h1>Chào {data.visited ? 'bạn' : 'người lạ'}!</h1>
initialising