cookies
cookies
işlevi, HTTP gelen istek çerezlerini bir Sunucu Bileşeninden okumanıza veya giden istek çerezlerini bir Sunucu Eylemine veya Rota İşleyicisine yazmanıza olanak tanır.
Bilmenizde fayda var:
cookies()
, döndürülen değerleri önceden bilinemeyen bir Dinamik İşlevdir. Bir düzende veya sayfada kullanılması, istek zamanında dinamik oluşturmaya giden yolu tercih edecektir.
cookies().get(name)
Bir çerez adı alan ve ad ve değer içeren bir nesne döndüren bir yöntem. name
ile bir çerez bulunamazsa, undefined
döndürür. Birden fazla çerez eşleşirse, yalnızca ilk eşleşmeyi döndürür.
import { cookies } from 'next/headers'
export default function Page() {
const cookieStore = cookies()
const theme = cookieStore.get('theme')
return '...'
}
cookies().getAll()
get
ile benzer bir yöntemdir, ancak name
ile eşleşen tüm çerezlerin bir listesini döndürür. name
belirtilmemişse, mevcut tüm çerezleri döndürür.
import { cookies } from 'next/headers'
export default function Page() {
const cookieStore = cookies()
return cookieStore.getAll().map((cookie) => (
<div key={cookie.name}>
<p>Name: {cookie.name}</p>
<p>Value: {cookie.value}</p>
</div>
))
}
cookies().has(name)
Bir çerez adı alan ve çerezin var olup olmadığına (true
) veya bulunup bulunmadığına (false
) bağlı olarak bir boolean
döndüren bir yöntem.
import { cookies } from 'next/headers'
export default function Page() {
const cookiesList = cookies()
const hasCookie = cookiesList.has('theme')
return '...'
}
cookies().set(name, value, options)
Bir çerez adı, değeri ve seçenekleri alan ve giden istek çerezini ayarlayan bir yöntem.
Bilmekte fayda var: HTTP, akış başladıktan sonra çerezlerin ayarlanmasına izin vermez, bu nedenle
.set()
adresini bir Sunucu Eyleminde veya Rota İşleyicisinde kullanmanız gerekir.
'use server'
import { cookies } from 'next/headers'
async function create(data) {
cookies().set('name', 'lee')
// or
cookies().set('name', 'lee', { secure: true })
// or
cookies().set({
name: 'name',
value: 'lee',
httpOnly: true,
path: '/',
})
}
Deleting cookies
Bilmekte fayda var: Çerezleri yalnızca bir Sunucu Eyleminde veya Rota İşleyicide silebilirsiniz.
Bir çerezi silmek için birkaç seçenek vardır:
cookies().delete(name)
Belirli bir isme sahip bir çerezi açıkça silebilirsiniz.
'use server'
import { cookies } from 'next/headers'
async function delete(data) {
cookies().delete('name')
}
cookies().set(name, '')
Alternatif olarak, aynı ada ve boş bir değere sahip yeni bir çerez ayarlayabilirsiniz.
'use server'
import { cookies } from 'next/headers'
async function delete(data) {
cookies().set('name', '')
}
Bilmenizde fayda var:
.set()
yalnızca bir Sunucu Eyleminde veya Rota İşleyicide kullanılabilir.
cookies().set(name, value, { maxAge: 0 })
maxAge
adresinin 0 olarak ayarlanması bir çerezin süresinin hemen dolmasını sağlar.
'use server'
import { cookies } from 'next/headers'
async function delete(data) {
cookies().set('name', 'value', { maxAge: 0 })
}
cookies().set(name, value, { expires: timestamp })
expires
adresini geçmişteki herhangi bir değere ayarlamak, bir çerezin süresini hemen sona erdirir.
'use server'
import { cookies } from 'next/headers'
async function delete(data) {
const oneDay = 24 * 60 * 60 * 1000
cookies().set('name', 'value', { expires: Date.now() - oneDay })
}
Bilmekte fayda var: Yalnızca
.set()
adresinin çağrıldığı aynı etki alanına ait çerezleri silebilirsiniz. Ayrıca, kodun silmek istediğiniz çerezle aynı protokolde (HTTP veya HTTPS) yürütülmesi gerekir.
Version History
Version | Changes |
---|---|
v13.0.0 | cookies introduced. |