HTTP Başlık Ayrıştırıcı

Tüm bir HTTP isteğini ya da yanıtını yapıştırın — curl -v'nin yazdırdığı blok ya da tarayıcının Ağ panelinin gösterdiği şey — ve her üstbilgi satırı çözülür: adı, değeri, ne yaptığını anlatan düz bir cümle ve onu tanımlayan belge. Set-Cookie öznitelik öznitelik ayrılır (Secure, HttpOnly, SameSite, Max-Age, Expires…), Content-Type ve Accept parametreleri açılır ve blok klasik yapısal sorunlar için denetlenir: eski katlanmış satırlar, geçersiz karakterler, yinelenen üstbilgiler ve yanlış yönde gönderilen üstbilgiler. Her şey tarayıcınızda çalışır ve hiçbir şey yüklenmez.
Otomatik ilk satıra bakar: bir istek satırı (GET /path HTTP/1.1) istek anlamına gelir, bir durum satırı (HTTP/1.1 200 OK) yanıt anlamına gelir, diğer her şey çıplak bir üstbilgi bloğu olarak okunur. Diğer seçenekler yönü zorlar, bu da hangi uyarıların geçerli olduğunu değiştirir.
Henüz hiçbir şey ayrıştırılmadı. Yukarıya bir istek ya da yanıt bloğu yapıştırın ve Üstbilgileri ayrıştırın'a basın ya da çalışılmış bir örnek için Örnek'e basın.
Ayrıştırmaya değer bir blok nereden alınır. Bir terminalde curl -v https://example.com/ 2>&1 isteği ve yanıtı > ve < önekleriyle yazdırır — bunları çıkarıp yapıştırın. curl -sI https://example.com/ yalnızca yanıt üstbilgi bloğunu verir. Tarayıcıda geliştirici araçlarını açın, Ağ sekmesine gidin, yenileyin, belge isteğini seçin ve Kopyala → Yanıt üstbilgilerini kopyala'yı kullanın; istek tarafı için Copy as cURL'u kullanın ve bayrakları okuyun. Başlangıç satırı olmayan düz bir Ad: değer satırları bloğu da ayrışır — yön denetimleri o zaman gevşetilir.
Öz test
Ayrıştırıcıyı sabit bloklara karşı yeniden çalıştırır: yön algılama, her iki örnek havuzu, her Set-Cookie özniteliği kuralı (Secure olmadan SameSite=None, sayısal olmayan Max-Age, bozuk Expires, bilinmeyen öznitelik, eşittir işareti olmayan bir çerez), obs-fold birleştirme, geçersiz alan adları, yinelenen üstbilgiler, yön uyuşmazlıkları ve olumsuz yollar. Hiçbir şey bir yere gönderilmez.
HTTP üstbilgisi nedir?
Tek cümlede: bir HTTP iletisi bir başlangıç satırı, üstbilgi adı verilen Ad: değer satırlarından oluşan bir blok, boş bir satır ve isteğe bağlı bir gövdedir — üstbilgiler, gövdenin kendisi dışında iletiyle ilgili her şeyi taşır: kimin gönderdiği, neyi kabul edebildiği, nasıl önbelleğe alındığı, nasıl kimlik doğrulandığı ve gönderenin geri ne istediği.
Dört aile
AileTaşınanÖrneklerYanıtladığı soru
İstek üstbilgileriistemci → sunucuHost, Accept, Cookie, Referer, Authorizationistemcinin ne istediği ve kendini kim olarak tanıttığı
Yanıt üstbilgilerisunucu → istemciLocation, Server, Set-Cookie, Retry-Aftersunucunun ne yaptığı ve karşılığında ne istediği
Gösterim üstbilgileriikisi de, gövde hakkındaContent-Type, Content-Length, Content-Encoding, ETaggövdenin hangi biçimde olduğu ve bunun hangi kopyası olduğu
Denetim üstbilgileriikisi de, bağlantı hakkındaCache-Control, Connection, Via, Transfer-Encodingileti ve bağlantının yolda nasıl ele alındığı

Bazı üstbilgiler kesin olarak tek yönlüdür: If-None-Match yalnızca bir istekte, Set-Cookie yalnızca bir yanıtta anlam taşır. Yanlış yönde ayrıştırmak klasik kopyala-yapıştır hata ayıklama hatalarından biridir, bu yüzden bu sayfa bunu işaretler.

Bir üstbilgi satırının dilbilgisi

RFC 9110, bir alan satırını field-name ":" OWS field-value OWS olarak tanımlar — yalnızca belirteç karakterlerinden (harfler, rakamlar ve !#$%&'*+-.^_`|~) oluşan bir ad, önünde boşluk olmayan bir iki nokta üst üste ve görünür karakterlerden, boşluklardan ve sekmelerden oluşan bir değer. Üstbilgi adları büyük/küçük harfe duyarsızdır (content-type, Content-Type ile aynıdır); değerler neredeyse her zaman büyük/küçük harfe duyarlıdır. Boşlukla ya da sekmeyle başlayan bir satır önceki üstbilgiyi sürdürürdü — obs-fold, 2014'ten beri kullanımdan kaldırılmış: onu açan bir vekil sunucu üstbilgiğin anlamını değiştirebilir, bu yüzden buradaki ayrıştırıcı onu birleştirir ama varlığını uyarır.

Yaygın hatalar
  • X-Forwarded-For'a güvenmek. Yoldaki her vekil sunucu tarafından eklenir ve bir istemci ilk atlamayı sahteleyebilir. Bir vekil sunucu zincirinin ne iddia ettiğini söyler, kimin bağlı olduğunu değil; bunu bir ipucu olarak görün ve sizin kontrol ettiğiniz bir vekil sunucunun onu üzerine yazmasını tercih edin.
  • Yalnızca yanıt üstbilgilerini okumak. İlginç hataların yarısı (yinelenen bir Accept, eksik bir Host, yanlış ana bilgisayara yönlendirilmiş bir yetkilendirme üstbilgisi) isteğin içinde yaşar; tarayıcı bunu varsayılan olarak gizler. Kendi isteğinizi görmek için Copy as cURL'u kullanın.
  • Set-Cookie satırlarını birleştirmek. Yinelenen üstbilgilerin çoğu virgüllerle birleştirilebilir — Set-Cookie birleştirilemez, çünkü virgül değerin kendisinin içinde görünür. Tarayıcılar her satırı ayrı bir çerez olarak ele alır.
  • Content-Length'in yazdığınız gövde boyutu olmasını beklemek. Content-Encoding uygulandıktan sonraki boyuttur ve yalnızca ileti parçalı değilse; bir Transfer-Encoding: chunked yanıtının anlamlı tek bir uzunluğu yoktur.
  • Üstbilgileri X- önekine bakarak yargılamak. Bu gelenek RFC 6648'de öldü: X-Forwarded-For ve X-Content-Type-Options fiilî kalıcı standartlardır, oysa X-olmayan birçok üstbilgi deneyseldir. Önek değil, tanımlayan belge ile yargılayın.
SSS

Buraya üstbilgi yapıştırmak güvenli mi? Ayrıştırma tamamen tarayıcınızda gerçekleşir ve hiçbir şey yüklenmez. Bununla birlikte kopyalanmış bir üstbilgi bloğu bir parmak izidir: çerezler, yetkilendirme üstbilgileri ve tam User-Agent birlikte sizi tanımlayabilir, bu yüzden bir meslektaşınıza göstermekte sakınca görmeyeceğiniz blokları ayrıştırın.

Tarayıcım, bu sayfanın hata dediği :status gibi üstbilgileri neden gösteriyor? Bunlar HTTP/2 ve HTTP/3 sözde-üstbilgileridir — ikili çerçeveleme katmanları başlangıç satırının ve Host'un yerini sözde alanlarla alır. Bu sayfa klasik HTTP/1.1 tel metnini ayrıştırır; sözde-üstbilgiler, protokol çevirdikten sonraki aynı bilgidir.

X-XSS-Protection'a ne oldu? Kullanımdan kaldırıldı: onu süren denetleyici kendi güvenlik hatalarına yol açtı ve tarayıcılar onu kaldırdı. Görevi bir Content-Security-Policy'ye aittir — onu CSP üretecinde oluşturun ve bütün kümeyi güvenlik başlıkları denetleyicisinde denetleyin.

Bir Set-Cookie özniteliği nasıl denetlenir? RFC 6265'e karşı: adlar ve değerler ilk eşittir işaretinden bölünür, öznitelikler ilk noktalı virgülden sonra gelir; Expires çerez biçiminde bir tarih olmalı, Max-Age rakamlardan oluşmalı, SameSite Strict/Lax/None'dan biri olmalı — ve Secure olmadan None güncel tarayıcılarda reddedilir, bu yüzden vurgulanır.

Yalnızca bir üstbilgi satırları listesini ayrıştırabilir miyim? Evet — Yalnızca üstbilgi bloğu'nu seçin ve başlangıç satırı olmadan yapıştırın. Yön denetimleri gevşetilir; diğer her şey (yapı, Set-Cookie, parametreler) yine çalışır.