Parser Set-Cookie

Set-Cookie Parser

Tempel header respons Set-Cookie multi-baris untuk memeriksa atribut dan menandai kombinasi SameSite / Secure yang berisiko.

Kartu Atribut Cookie

2 Set-Cookie
#1sessionabc123
path/
httponly(flag)
secure(flag)
samesiteLax
Tidak ditemukan masalah atribut yang jelas
#2preview1
max-age600 (10m 0s)

setCookieParser.attr.maxAgeHint

samesiteNone
secure(flag)
setCookieParser.warn.missingHttpOnlysetCookieParser.warn.missingPath

Pratinjau JSON

[
  {
    "index": 0,
    "raw": "session=abc123; Path=/; HttpOnly; Secure; SameSite=Lax",
    "name": "session",
    "value": "abc123",
    "decodedValue": "abc123",
    "attributes": [
      {
        "key": "path",
        "value": "/"
      },
      {
        "key": "httponly",
        "value": null
      },
      {
        "key": "secure",
        "value": null
      },
      {
        "key": "samesite",
        "value": "Lax"
      }
    ],
    "attributeMap": {
      "path": "/",
      "httponly": true,
      "secure": true,
      "samesite": "Lax"
    },
    "warnings": []
  },
  {
    "index": 1,
    "raw": "preview=1; Max-Age=600; SameSite=None; Secure",
    "name": "preview",
    "value": "1",
    "decodedValue": "1",
    "attributes": [
      {
        "key": "max-age",
        "value": "600"
      },
      {
        "key": "samesite",
        "value": "None"
      },
      {
        "key": "secure",
        "value": null
      }
    ],
    "attributeMap": {
      "max-age": "600",
      "samesite": "None",
      "secure": true
    },
    "warnings": [
      "warn.missingHttpOnly",
      "warn.missingPath"
    ]
  }
]

Ketika browser tidak menerima Cookie, seringkali bukan karena nilainya salah, melainkan karena atribut Set-Cookie yang salah.

Rekomendasi Terkait

Apa itu Parser Set-Cookie?

Parser Set-Cookie adalah alat debug yang khusus ditujukan untuk konten `Set-Cookie` dalam header respons HTTP. Tujuannya bukan sekadar memisahkan baris teks berdasarkan titik koma, melainkan membantu pengembang menentukan: apakah konfigurasi cookie ini dari server sudah benar, mengapa browser tidak menerimanya, kombinasi atribut apa yang menimbulkan risiko keamanan atau kompatibilitas, dan apakah Set-Cookie saat ini cocok untuk skenario lintas situs, SSO, iframe, cookie pihak ketiga, atau sesi.

Berbeda dengan Cookie di header permintaan, Set-Cookie adalah 'perintah konfigurasi' yang dikirim server ke browser. Ini tidak hanya berisi `name=value`, tetapi juga membawa atribut seperti SameSite, Secure, HttpOnly, Path, Domain, Expires, Max-Age, Partitioned — bidang-bidang ini secara langsung menentukan apakah browser akan menulis cookie, kapan akan kedaluwarsa, di jalur dan domain mana ia berlaku, dan apakah dapat dikirim dalam permintaan lintas situs. Oleh karena itu, akar penyebab dari banyak masalah seperti 'kehilangan sesi', 'browser tidak mengirim cookie', 'tidak berfungsi dalam skenario lintas domain' sebenarnya tidak terletak pada nilai itu sendiri, melainkan pada konfigurasi atribut Set-Cookie.

Nilai dari halaman saat ini adalah mengekstrak atribut-atribut ini dari header respons asli secara terstruktur, kemudian melakukan pemeriksaan statis yang dikombinasikan dengan aturan browser yang sebenarnya. Misalnya, apakah SameSite=None kurang Secure, apakah Partitioned dipasangkan dengan Secure, apakah prefiks __Host- salah mengatur Domain, apakah Max-Age tidak valid atau bernilai 0, apakah Expires kekurangan Max-Age. Masalah-masalah ini biasanya tidak ditampilkan langsung oleh browser seperti kesalahan sintaksis, melainkan ditolak secara diam-diam atau menunjukkan gejala 'tidak berfungsi', oleh karena itu pemeriksaan dengan alat sangat penting.

Jika Anda hanya ingin mengetahui cookie apa yang saat ini dikirim dalam permintaan, jangan tetap berada di halaman ini — silakan buka 'Parser HTTP Cookie' yang lebih cocok untuk memisahkan header permintaan. Halaman saat ini lebih cocok untuk skenario pemeriksaan header respons seperti 'mengapa browser tidak menulis', 'apakah ada risiko tersembunyi dalam konfigurasi cookie ini dari server', 'apakah kombinasi atribut lintas situs dan atribut keamanan sudah tepat'.

Kasus penggunaan

  • Saat browser menolak penulisan cookie, dengan cepat menentukan apakah itu masalah konfigurasi SameSite, Secure, HttpOnly, atau Path/Domain
  • Dalam skenario login pihak ketiga, SSO, penyematan iframe, atau permintaan lintas situs, memeriksa apakah SameSite=None dipasangkan dengan Secure dengan benar
  • Saat audit keamanan, memeriksa secara massal cookie yang dikembalikan oleh antarmuka apakah ada kekurangan HttpOnly, SameSite, atau terdapat kombinasi atribut berisiko tinggi
  • Memverifikasi bahwa cookie prefiks __Host-/__Secure- memenuhi batasan kuat browser atau tidak, untuk menghindari diabaikan secara diam-diam
  • Saat men-debug solusi partisi pihak ketiga Partitioned Cookie / CHIPS, mengonfirmasi apakah Partitioned dan Secure dideklarasikan secara bersamaan
  • Membandingkan perbedaan header respons Set-Cookie antara lingkungan pengembangan, pengujian, dan produksi untuk memecahkan masalah sesi tidak normal setelah perpindahan lingkungan

Cara Penggunaan

  1. Salin konten header respons Set-Cookie (mendukung multi-baris) dari DevTools browser, alat penangkap paket, atau log server
  2. Tempel ke area input, alat akan secara otomatis menghapus prefiks `Set-Cookie:` dan melakukan parsing baris demi baris
  3. Lihat nama, nilai, nilai yang didekode URL, kartu atribut, dan label peringatan setiap cookie
  4. Salin header asli atau lihat pratinjau JSON, lanjut kirim hasil ke backend, tempel ke Issue, atau tulis ke skrip pengujian

Fitur

  • Parsing independen beberapa Set-Cookie: setiap baris dalam kartu terpisah, lihat nama, nilai asli, nilai yang didekode URL, dan atribut satu per satu
  • Pemeriksaan otomatis 14 masalah umum: mencakup risiko yang sering terjadi seperti SameSite, Secure, HttpOnly, Path, Domain, Max-Age, Expires, prefiks __Host-/__Secure-, dan Partitioned
  • Pemisahan atribut lengkap: menampilkan bidang SameSite, Secure, HttpOnly, Path, Domain, Expires, Max-Age, Partitioned secara terstruktur
  • Konversi Max-Age yang mudah dibaca manusia: detik otomatis dikonversi menjadi menit, jam, hari, mengurangi biaya konversi manual
  • Input massal multi-baris: dapat langsung menempelkan seluruh blok header respons Set-Cookie yang disalin dari DevTools atau alat penangkap paket
  • Penyalinan header asli dan pratinjau JSON: nyaman untuk dikirim kembali ke backend, juga nyaman untuk menulis dokumentasi, Issue, skrip, dan kasus uji
  • Tanpa pengunggahan lokal: Session, Token, dan cookie status login yang sensitif dianalisis di dalam browser, tidak meninggalkan perangkat

Kapan menggunakan Parser Set-Cookie dan kapan menggunakan dua halaman lainnya?

Melihat dengan jelas 'apa yang diatur server' dan 'apa yang sebenarnya dikirim dalam permintaan' adalah dua hal yang berbeda, jangan tertukar saat memeriksa.

AlatInput yang sesuaiPaling cocok untukKeunggulan inti
Parser Set-Cookie (halaman saat ini)Header respons Set-CookieMemecahkan masalah mengapa browser tidak menerima cookie, mengapa tidak berfungsi lintas situs, mengapa konfigurasi atribut keamanan berisikoPemisahan atribut lengkap dan secara otomatis memeriksa 14 jenis masalah konfigurasi yang sering terjadi
Parser HTTP CookieHeader permintaan Cookie, document.cookieMemastikan cookie apa yang sebenarnya dikirim dalam permintaan, apakah nilai dikodekan dengan URL, apakah ada nama yang berulangLebih fokus pada pemisahan pasangan nama-nilai di header permintaan dan output yang terstandarisasiBuka Parser HTTP Cookie
Parser CookieSkenario pemeriksaan campuran string Cookie dan Set-CookieSaat Anda belum yakin sumber data di tangan, atau ingin beralih cepat antara dua mode Cookie / Set-Cookie dalam satu halamanLebih seperti pintu masuk utama untuk debug Cookie, sekaligus mendukung ekspor Netscape Cookie FileBuka Parser Cookie

Best Practices

Pertama tentukan masalah terletak pada 'penulisan gagal' atau 'tidak terkirim dalam permintaan'

Jika browser sama sekali tidak menulis cookie, sebaiknya lihat halaman saat ini terlebih dahulu; jika browser sudah menulis tetapi tidak mengirim dalam permintaan berikutnya, perlu diperiksa bersama dengan Parser HTTP Cookie. Set-Cookie dan header permintaan Cookie adalah dua tahap yang berbeda.

Dalam skenario lintas situs, pertama-tama periksa kombinasi SameSite=None dan Secure

Jebakan yang paling umum dalam SSO, login pihak ketiga, penyematan iframe, dan permintaan lintas domain adalah SameSite=None tetapi tidak dikonfigurasi dengan Secure. Selesaikan kelompok masalah ini terlebih dahulu, baru kemudian periksa logika server dan kebijakan browser.

Jangan hanya melihat nama dengan prefiks __Host- / __Secure-, periksa kelengkapan batasannya

Banyak tim berpikir bahwa menambahkan prefiks `__Host-` atau `__Secure-` ke nama cookie sudah membuatnya lebih aman, namun jika kondisi yang menyertainya seperti Secure, Path=/, Domain tidak terpenuhi, browser tetap akan menolak penulisan.

Saat menulis dokumentasi dan mereproduksi Issue, utamakan untuk menyimpan dua materi: header asli dan JSON

Header asli cocok bagi backend dan operasi untuk memeriksa nilai pengembalian yang sebenarnya; JSON cocok untuk ditempelkan ke Issue, kasus uji, dan skrip untuk diproses lebih lanjut. Menyimpan keduanya bersama-sama akan lebih memudahkan reproduksi dan kolaborasi dibandingkan hanya mengambil tangkapan layar dari DevTools.

Pertanyaan Umum

Apa perbedaan antara parser Set-Cookie dan parser header permintaan Cookie?

Parser Set-Cookie ditujukan untuk header respons dari server, fokus pada melihat 'apakah browser akan menerima cookie ini, apakah ada masalah dengan atribut'; parser Cookie ditujukan untuk permintaan yang dikirim oleh browser, fokus pada melihat 'cookie apa saja yang dikirim dalam permintaan ini'. Jika Anda sedang memecahkan masalah konfigurasi atribut SameSite, HttpOnly, Secure, Path, Domain, Expires, Max-Age, sebaiknya gunakan halaman saat ini.

Parser HTTP Cookie

Mengapa browser sudah menerima respons tetapi tidak menulis Cookie?

Inilah masalah yang paling cocok diselesaikan oleh alat saat ini. Penyebab umum meliputi SameSite=None yang tidak dikonfigurasi dengan Secure, upaya mengatur Secure Cookie di halaman HTTP, pelanggaran prefiks __Host-, Partitioned tanpa Secure, konfigurasi Path atau Domain yang tidak tepat, Max-Age tidak valid atau langsung bernilai 0, serta pembatasan kebijakan cookie pihak ketiga dari browser.

Risiko Set-Cookie umum apa saja yang akan diperiksa oleh alat?

Halaman saat ini akan secara otomatis mendeteksi 14 jenis masalah yang sering terjadi, termasuk SameSite=None tanpa Secure, nilai SameSite tidak valid, Partitioned tanpa Secure, kurangnya HttpOnly, kurangnya Path, kurangnya SameSite, prefiks __Host- tanpa Secure, Path bukan /, konfigurasi Domain yang salah, prefiks __Secure- tanpa Secure, Max-Age tidak valid, Max-Age=0, Domain dimulai dengan titik, dan Expires tanpa Max-Age.

Mengapa SameSite=None harus selalu disertai dengan Secure?

Browser modern mensyaratkan bahwa cookie yang dapat dikirim lintas situs yang mendeklarasikan `SameSite=None` juga harus memiliki atribut `Secure`, jika tidak browser biasanya akan langsung menolak penulisan. Masalah jenis ini sangat umum terjadi saat debug login pihak ketiga, SSO, penyematan iframe, dan permintaan lintas domain.

Mengapa browser menolak cookie dengan prefiks __Host- dan __Secure-?

`__Host-` dan `__Secure-` adalah prefiks keamanan dengan batasan kuat. `__Host-` mensyaratkan harus ada Secure, Path=/ dan tidak boleh mengatur Domain; `__Secure-` setidaknya mensyaratkan Secure. Jika aturan ini dilanggar, browser akan langsung mengabaikan cookie tersebut.

Bagaimana seharusnya melihat Max-Age dan Expires?

Max-Age adalah jumlah detik relatif, biasanya memiliki prioritas lebih tinggi daripada Expires; Expires adalah titik waktu absolut, bergantung pada jam klien. Banyak server hanya menulis Expires tanpa menulis Max-Age, meskipun ini berfungsi, namun saat debug lebih mudah menyebabkan salah penilaian karena perbedaan zona waktu atau waktu sistem.

Apakah alat ini cocok untuk memecahkan masalah cookie lintas situs dan cookie pihak ketiga?

Cocok. Baik itu login pihak ketiga, SSO, penyematan iframe, antarmuka lintas domain, atau skenario CHIPS (Partitioned Cookie), alat ini dapat membantu Anda dengan cepat melihat apakah kombinasi SameSite, Secure, dan Partitioned sudah tepat.

Apakah hasil parsing mendukung penyalinan atau ekspor?

Mendukung. Anda dapat menyalin header Set-Cookie asli dengan satu klik, serta melihat pratinjau JSON terstruktur untuk menempelkan nama, nilai, atribut, dan hasil peringatan setiap cookie ke dalam Issue, dokumentasi, skrip pengujian, atau catatan pengujian integrasi.

Apakah Session dan Token yang saya salin akan diunggah ke server?

Tidak. Analisis konten Set-Cookie, decoding URL, pemisahan atribut, dan pemeriksaan peringatan semuanya dilakukan secara lokal di browser, header respons sensitif tidak akan diunggah ke server.

Glosarium

Set-Cookie
Header respons HTTP, di mana server memberitahu browser untuk menyimpan sebuah cookie. Satu respons dapat muncul beberapa Set-Cookie, masing-masing biasanya sesuai dengan satu cookie.
SameSite
Atribut yang mengontrol apakah cookie dikirim dalam permintaan lintas situs. Nilai umum adalah Strict, Lax, None; di mana None biasanya mensyaratkan pengaturan Secure secara bersamaan.
HttpOnly
Ketika diatur, JavaScript sisi depan tidak dapat membaca cookie ini melalui document.cookie, terutama digunakan untuk mengurangi risiko pencurian sesi melalui XSS.
Secure
Ketika diatur, browser hanya mengirim cookie ini dalam koneksi HTTPS (atau pengecualian localhost), menghindari cookie sensitif terekspos melalui HTTP yang tidak terenkripsi.
Max-Age
Waktu hidup relatif cookie dalam satuan detik. Biasanya memiliki prioritas lebih tinggi daripada Expires, disarankan untuk diatur secara eksplisit di server.
Expires
Titik waktu kedaluwarsa absolut cookie, bergantung pada waktu lokal klien. Saat digunakan sendiri, biaya debug biasanya lebih tinggi daripada Max-Age.
Path
Membatasi awalan jalur URL tempat cookie berlaku. Jika Path tidak cocok, meskipun cookie sudah ditulis, ia tidak akan dikirim dalam permintaan berikutnya.
Domain
Membatasi rentang domain tempat cookie berlaku. Jika tidak diatur, biasanya hanya terbatas pada host saat ini; jika diatur dapat berdampak pada subdomain.
Partitioned (CHIPS)
Solusi penyimpanan terpartisi untuk cookie pihak ketiga, sering digunakan sebagai jalur alternatif setelah browser secara bertahap memperketat aturan tentang cookie pihak ketiga. Implementasi saat ini biasanya mensyaratkan untuk dipasangkan dengan Secure.
Prefiks __Host- / __Secure-
Prefiks penamaan cookie keamanan tinggi yang didukung oleh browser, memiliki aturan batasan yang kuat. Jika aturan dilanggar, browser akan menolak menerima cookie yang sesuai.

Tabel referensi cepat perbandingan tiga strategi SameSite

Saat memeriksa cookie lintas situs, pertama-tama lihat batas perilaku SameSite, kemudian periksa apakah ada kekurangan Secure.

Nilai SameSiteNavigasi tingkat atas lintas situs (GET)Sub-sumber daya lintas situs (img/iframe/script)Formulir POST lintas situsXHR/fetch lintas situsApakah wajib Secure
StrictTidak dikirimTidak dikirimTidak dikirimTidak dikirimTidak
Lax (default)DikirimTidak dikirimTidak dikirimTidak dikirimTidak
NoneDikirimDikirimDikirimDikirimHarus mengatur Secure

Tabel perbandingan masalah yang sering terjadi saat debug Set-Cookie

Ketika browser menolak cookie secara diam-diam, pertama-tama periksa sesuai dengan arah di bawah ini, biasanya lebih cepat daripada menatap badan respons.

GejalaPenyebab dengan probabilitas tinggiPeriksa terlebih dahulu
Browser sama sekali tidak menulis CookieSameSite=None tanpa Secure, pelanggaran prefiks, atau kombinasi atribut tidak validPertama lihat label peringatan dan kartu atribut di halaman saat ini
Tidak berfungsi dalam skenario lintas situs / iframeSameSite terlalu ketat, kurang Secure, atau pembatasan kebijakan pihak ketigaFokus pada SameSite, Secure, Partitioned
Cookie kedaluwarsa segera setelah ditulisMax-Age=0, Max-Age tidak valid, masalah dengan waktu ExpiresPertama lihat Max-Age, kemudian lihat Expires
__Host- / __Secure- Cookie tidak berfungsiBatasan Secure, Path=/ atau Domain tidak terpenuhiPeriksa apakah peringatan prefiks terpicu
Lingkungan pengembangan normal, lingkungan produksi tidak normalPerbedaan respons pada tingkat HTTPS, Domain, Path, SameSite, atau proxySalin header asli, bandingkan respons Set-Cookie di berbagai lingkungan

Privacy & Security

Analisis header respons Set-Cookie, decoding URL, pemisahan atribut, dan pemeriksaan 14 jenis peringatan semuanya dilakukan sepenuhnya secara lokal di browser. Session, Token, dan cookie sesi yang ditempelkan tidak akan diunggah ke server mana pun.