HTTP (İngilizce: Hyper-Text Transfer Protocol, Türkçe: Hiper-Metin Transfer Protokolü) bir kaynaktan dağıtılan ve ortak kullanıma açık olan hiperortam bilgi sistemleri için uygulama seviyesinde bir iletişim protokolüdür. HTTP, World Wide Web için veri iletişiminin temelidir; burada köprü metni belgeleri, örneğin bir fare tıklamasıyla veya bir web tarayıcısında ekrana dokunarak kullanıcının kolayca erişebileceği diğer kaynaklara köprüler içerir.
İnternet iletişim kuralları dizisi | ||
Katman | İletişim kuralları | |
7. | Uygulama katmanı | HTTP, DNS, SMTP, FTP, TFTP, UUCP, NNTP, SSL, SSH, IRC, SNMP, SIP, RTP, Telnet, ... |
6. | Sunum katmanı | ISO 8822, ISO 8823, ISO 8824, ITU-T T.73, ITU-T X.409, ... |
5. | Oturum katmanı | NFS, SMB, ISO 8326, ISO 8327, ITU-T T.6299, ... |
4. | Ulaşım katmanı | TCP, UDP, SCTP, DCCP, ... |
3. | Ağ katmanı | IP, IPv4, IPv6, ICMP, ARP, İnternet Grup Yönetim Protokolü, IPX,... |
2. | Veri bağlantısı katmanı | Ethernet, HDLC, Wi-Fi, Token ring, FDDI, PPP, L2TP... |
1. | Donanım katmanı | ISDN, RS-232, EIA-422, RS-449, EIA-485, ... |
HTTP, 1989'da CERN'de Tim Berners-Lee tarafından geliştirilmeye başlandı. Yorumlara yönelik erken HTTP taleplerinin (RFC'ler) geliştirilmesi, İnternet Mühendisliği Görev Gücü (IETF) ve World Wide Web Consortium (W3C) tarafından koordine edilmiş bir çalışmadır. Daha sonra IETF'e taşınmıştır.
HTTP/1.1 ilk olarak 1997'de RFC 2068'de belgelendi. Bu şartname 1999'da RFC 2616'nın gelmesiyle iptal edildi ve aynı şekilde 2014'te, RFC 7230 ile değiştirildi.
(HTTP/2), HTTP'nin "kablolu" semantiğinin daha verimli bir ifadesidir. 2015'te yayınlanmıştır; artık hemen hemen tüm web tarayıcıları ve TLS 1.2 veya daha yenisinin gerekli olduğu bir Uygulama Katmanı Protokol Anlaşması (ALPN) uzantısı kullanan Taşıma Katmanı Güvenliği (TLS) üzerinden büyük web sunucuları tarafından desteklenmektedir.
, HTTP/2'nin halihazırda web'de kullanımda olan ve temeldeki aktarım protokolü için TCP yerine UDP kullanan ardılıdır. HTTP/3, Eylül 2019'da Cloudflare ve Google Chrome tarafından desteklenmeye başladı (Chrome ve Firefox'un kararlı sürümlerinde etkinleştirilebilir).
Teknik genel bakış
HTTP, istemci-sunucu bilgi işlem modelinde bir istek-yanıt protokolü olarak işlev görür. Örneğin, bir web tarayıcısı istemci olabilir veya bir web sitesini barındıran bir barındırma hizmetinde çalışan bir uygulama sunucu olabilir. İstemci, sunucuya bir HTTP istek mesajı gönderir. HTML dosyaları ve diğer içerik gibi kaynakları sağlayan veya istemci adına diğer işlevleri gerçekleştiren sunucu, istemciye bir yanıt mesajı verir. Yanıt, istekle ilgili tamamlanma durumu bilgilerini içerir, ayrıca mesaj gövdesinde istenen içeriği gösterebilir.
HTTP, ara ağ ögelerinin istemciler ve sunucular arasındaki iletişimi iyileştirmesine veya etkinleştirmesine izin vermek için tasarlanmıştır. Yüksek trafikli web siteleri, genellikle yanıt süresini iyileştirmek için yukarı akış sunucuları adına içerik sağlayan web önbellek sunucularından yararlanır. Web tarayıcıları, önceden erişilen web kaynaklarını önbelleğe alır ve ağ trafiğini azaltmak için mümkün olduğunca bunları yeniden kullanır. Özel ağ sınırlarındaki HTTP vekil sunucuları, mesajları harici sunucularla aktararak, genel olarak yönlendirilebilir bir adrese sahip olmayan istemciler için iletişimi kolaylaştırabilir.
HTTP, İnternet iletişim kuralları dizisi paketi çerçevesinde tasarlanmış bir uygulama katmanı protokolüdür. İletim Kontrol Protokolü (TCP) yaygın olarak kullanılmaktadır. Ancak HTTP, Kullanıcı Datagram Protokolü (UDP) gibi güvenilmez protokolleri, örneğin HTTPU ve Basit Hizmet Keşif Protokolü (SSDP) gibi kullanacak şekilde uyarlanabilir.
HTTP kaynakları, Tekdüzen Kaynak Tanımlayıcıları (URL'ler) şemaları http ve https kullanılarak, Tekdüzen Kaynak Konum Belirleyicileri (URL'ler) tarafından tanımlanır. RFC 3986'da tanımlandığı gibi, URL'ler HTML belgelerinde köprüler olarak kodlanır, böylece birbirine bağlı köprü belgeleri oluşturulur. HTTP/1.1, orijinal HTTP'nin (HTTP/1.0) bir revizyonudur.
HTTP/1.0'da her istek için sunucuya ayrı bir bağlantı yapılması gerekir. HTTP/1.1'de ise tek bir bağlantı ile birden fazla istek yapılabilir. Bu nedenle HTTP/1.1 iletişimleri daha az gecikme yaşar.
HTTP/2.0 protokol perfonmansını iyileştirmek için ortaya çıktı. Çünkü HTTP/1.1 sıralı bir protokol olup her seferinde tek bir istek gönderilebilir. HTTP/2.0'de ise zaman uyumsuz olarak istek göndermeye ve yanıt almaya izin verir.
HTTP/3.0'nin HTTP/2.0'dan farkı kullanılan taşıma katmanı protokolüdür. HTTP/2.0 TLS içeren veya içermeyen TCP bağlantıları varken HTTP/3.0'da QUIC(Hızlı UDP İnternet Bağlantıları) üzerine tasarlanmıştır. HTTP/3.0'ın avantajları daha iyi iletim hızı, daha kısa yükleme süreleri ve daha kararlı bir bağlantı sağlar.
Tarihçe
Hiper metin terimi ilk kez, tarafından 1965'te 'nde ortaya atıldı. Bu da Vannevar Bush'un 1930'lardaki mikrofilm temelli bilgi erişim ve yönetim sistemi ""in vizyonundan esinlenerek 1945 tarihli "" adlı makalesinde anlatıldı. Tim Berners-Lee ve CERN'deki ekibi, orijinal HTTP'yi, HTML'i ve bir web sunucusu ve metin tabanlı bir web tarayıcı için ilgili teknolojiyi icat etmekle tanınır. Ayrıca Berners-Lee, ilk olarak 1989 yılında "WorldWideWeb" projesini önerdi - günümüzde World Wide Web olarak bilinmektedir. Protokolün ilk sürümünde, bir sunucudan bir sayfa talep edecek GET adında tek bir yöntem bulunuyordu.
HTTP'nin belgelenen ilk sürümü 1991'de yayınlanan HTTP V0.9'du., 1995 yılında HTTP Çalışma Grubunu (HTTP WG) yönetti ve protokolü, ek yöntemler ve başlık alanları ekleyerek daha verimli hale gelen bir güvenlik protokolüne bağlı genişletilmiş işlemler, genişletilmiş görüşme, daha zengin meta bilgilerle genişletmek istedi. RFC 1945 ise, 1996'da resmi olarak HTTP V1.0'ı tanıttı.
HTTP WG, Aralık 1995'te yeni standartlar yayınlamayı planladı ve daha sonra gelişmekte olan RFC 2068'e (HTTP-NG olarak adlandırılır) dayanan ön standart HTTP/1.1 desteği, 1996'nın başlarında büyük tarayıcı geliştiricileri tarafından hızla benimsendi. Yeni tarayıcıların son kullanıcılar tarafından benimsenmesi hızlı oldu. Mart 1996'da, bir web barındırma şirketi, internette kullanılan tarayıcıların %40'ından fazlasının HTTP 1.1 uyumlu olduğunu bildirdi. Aynı web barındırma şirketi, Haziran 1996 itibarıyla, sunucularına erişen tüm tarayıcıların %65'inin HTTP/1.1 uyumlu olduğunu bildirdi. RFC 2068'de tanımlanan HTTP/1.1 standardı resmi olarak Ocak 1997'de yayınlandı. Daha sonra yapılan iyileştirmeler ve güncellemeler, Haziran 1999'da RFC 2616 kapsamında yayınlandı.
2007'de, HTTP/1.1 spesifikasyonunu revize etmek ve açıklığa kavuşturmak için kısmen HTTP Çalışma Grubu oluşturuldu. Haziran 2014'te WG, RFC 2616'yı geçersiz kılan güncellenmiş altı bölümlü bir spesifikasyon yayınladı:
- RFC 7230, HTTP/1.1: Mesaj Sözdizimi ve Yönlendirme
- RFC 7231, HTTP/1.1: Anlambilim ve İçerik
- RFC 7232, HTTP/1.1: Koşullu İstekler
- RFC 7233, HTTP/1.1: Aralık İstekleri
- RFC 7234, HTTP/1.1: Önbellek
- RFC 7235, HTTP/1.1: Kimlik Doğrulama
(HTTP/2) ise, Mayıs 2015'te RFC 7540 olarak yayınlandı.
Yıl | Versiyon |
---|---|
1991 | HTTP/0.9 |
1996 | HTTP/1.0 |
1997 | HTTP/1.1 |
2015 | HTTP/2 |
2022 | HTTP/3 |
HTTP oturumu
Bir HTTP oturumu, bir ağ istek-yanıt işlemleri dizisidir. HTTP istemcisi, bir sunucudaki belirli bir bağlantı noktasına (tipik olarak 80 numaralı bağlantı noktası, bazen 8080 numaralı bağlantı noktası) bir İletim Kontrol Protokolü (TCP) bağlantısı kurarak bir istek başlatır. (TCP ve UDP port numaraları listesine bakınız). Bu port üzerinde dinleyen bir HTTP sunucusu, bir istemcinin istek mesajını bekler. İsteği aldıktan sonra sunucu, "HTTP / 1.1 200 OK" gibi bir durum satırı ve kendisine ait bir mesaj gönderir. Bu mesajın gövdesi tipik olarak talep edilen kaynaktır, ancak bir hata mesajı veya başka bilgiler de döndürülebilir.
Kalıcı bağlantılar
HTTP/0.9 ve 1.0'da, bağlantı tek bir istek/yanıt çiftinden sonra kapatılır. HTTP/1.1'de, bir bağlantının birden fazla istek için yeniden kullanılabileceği bir canlı tutma mekanizması tanıtıldı. Bu tür kalıcı bağlantılar, istemcinin ilk istek gönderildikten sonra TCP 3 Yollu El Sıkışma bağlantısını yeniden iletmesi gerekmediğinden istek gecikmesini hissedilir şekilde azaltır. Diğer bir olumlu yan etki, genel olarak, TCP'nin yavaş başlatma mekanizması nedeniyle bağlantının zamanla daha hızlı hale gelmesidir. Protokolün 1.1 sürümü ayrıca HTTP/1.0 için bant genişliği optimizasyonu iyileştirmeleri yaptı. Örneğin, HTTP/1.1, kalıcı bağlantılardaki içeriğin ara belleğe alınmak yerine akışa alınmasına izin vermek için parçalı aktarım kodlaması getirmiştir. HTTP ardışık düzeni, gecikme süresini daha da azaltarak istemcilerin her yanıtı beklemeden önce birden çok istek göndermesine olanak tanır. Protokole bir başka ek, bir sunucunun bir istemci tarafından açıkça talep edilen bir kaynağın sadece bir kısmını ilettiği bayt hizmetiydi.
Oturum durumu
HTTP, durum bilgisiz bir protokoldür. Durum bilgisi olmayan bir protokol, HTTP sunucusunun birden çok istek süresi boyunca her bir kullanıcı hakkındaki bilgileri veya durumu saklamasını gerektirmez. Ancak, bazı web uygulamaları, örneğin HTTP tanımlama bilgilerini veya web formları içindeki gizli değişkenleri kullanarak durumlar veya sunucu tarafı oturumları uygular.
HTTP kimlik doğrulaması
HTTP, temel erişim kimlik doğrulaması ve özet erişim kimlik doğrulaması gibi, sunucunun istenen içeriği sunmadan önce bir sınamayı tanımlayıp yayınladığı bir sınama-yanıt mekanizması aracılığıyla çalışan çoklu kimlik doğrulama şemaları sağlar.
HTTP, bir sunucu tarafından bir istemci isteğini sorgulamak için ve bir istemci tarafından kimlik doğrulama bilgilerini sağlamak için kullanılabilen, genişletilebilir bir dizi sınama-yanıt kimlik doğrulama şemaları aracılığıyla erişim kontrolü ve kimlik doğrulaması için genel bir çerçeve sağlar.
Kimlik doğrulama
HTTP Kimlik Doğrulaması belirtimi ayrıca belirli bir kök URL'de ortak olan kaynakları daha fazla bölmek için rastgele, uygulamaya özgü bir yapı sağlar. Bölge değeri dizesi, varsa, meydan okumanın koruma alanı bileşenini oluşturmak için kurallı kök URL ile birleştirilir. Bu, sunucunun tek bir kök URL altında ayrı kimlik doğrulama kapsamları tanımlamasına izin verir.
Mesaj biçimi
İstemci sunucuya istek gönderir ve sunucu yanıtlar gönderir.
Mesaj isteği
İstek mesajı aşağıdakilerden oluşur:
- Bir istek satırı (örneğin, sunucudan /images/logo.png adlı bir kaynak isteyen GET /images/logo.png HTTP/1.1)
- Başlık alanları (örneğin, Accept-Language: en)
- Boş satır
- İsteğe bağlı mesaj bölümü
İstek satırı ve diğer başlık alanlarının her biri <CR> <LF> ile bitmelidir. (Bir satır başı karakteri ve ardından bir satır besleme karakteri). Boş satır yalnızca <CR> <LF> içermeli ve başka bir boşluk olmamalıdır. HTTP/1.1 protokolünde, ana bilgisayar dışındaki tüm başlık alanları isteğe bağlıdır. Yalnızca yol adını içeren bir istek satırı, RFC 1945'teki HTTP/1.0 belirtiminden önce, HTTP istemcileriyle uyumluluğu korumak için sunucular tarafından kabul edilir.
İstek yöntemleri
HTTP, tanımlanan kaynakta gerçekleştirilmesi istenen eylemi belirtmek için yöntemleri tanımlar (bazen fiil olarak adlandırılır, ancak spesifikasyonun hiçbir yerinde fiilden bahsedilmez ve OPTIONS veya HEAD bir fiil değildir). Önceden var olan veriler veya dinamik olarak oluşturulan veriler olsun, bu kaynağın neyi temsil ettiği, sunucunun uygulanmasına bağlıdır. Çoğu zaman kaynak, bir dosyaya veya sunucuda bulunan bir yürütülebilir dosyanın çıktısına karşılık gelir. HTTP/1.0 spesifikasyonu GET, HEAD ve POST yöntemlerini tanımladı ve HTTP/1.1 spesifikasyonu beş yeni yöntem ekledi: OPTIONS, PUT, DELETE, TRACE ve CONNECT. Bu belgelerde belirtilerek, anlambilimleri iyi bilinir ve bunlara güvenilebilir. Herhangi bir istemci herhangi bir yöntemi kullanabilir ve sunucu herhangi bir yöntem kombinasyonunu destekleyecek şekilde yapılandırılabilir. Bir yöntem bir ara madde tarafından bilinmiyorsa, güvenli olmayan ve etkisiz olmayan bir yöntem olarak ele alınacaktır. Tanımlanabilecek yöntem sayısında herhangi bir sınırlama yoktur ve bu, mevcut altyapıyı bozmadan gelecekteki yöntemlerin belirlenmesine olanak tanır. Örneğin, WebDAV yedi yeni yöntem tanımladı ve RFC 5789 PATCH yöntemini belirledi. Yöntem adları büyük/küçük harfe duyarlıdır. Bu, büyük/küçük harfe duyarlı olmayan HTTP başlık alanı adlarının tersidir.
GET
GET yöntemi, belirtilen kaynağın bir temsilini ister. GET kullanan istekler yalnızca verileri almalı ve başka bir etkisi olmamalıdır. (Bu, diğer bazı HTTP yöntemleri için de geçerlidir.)W3C, bu ayrımla ilgili kılavuz ilkeler yayınladı ve "Web uygulaması tasarımı yukarıdaki ilkelerle ve aynı zamanda ilgili sınırlamalarla bilgilendirilmelidir." şeklinde açıklama yaptı.
HEAD
HEAD yöntemi, GET isteğiyle aynı olan ancak yanıt gövdesi olmayan bir yanıt ister. Bu, tüm içeriği taşımak zorunda kalmadan yanıt başlıklarında yazılan meta bilgileri almak için kullanışlıdır.
POST
POST yöntemi, sunucunun, talepte yer alan varlığı URL tarafından tanımlanan web kaynağının yeni bir alt ögesi olarak kabul etmesini ister. POST edilen veriler, örneğin, mevcut kaynaklar için bir açıklama olabilir; bir bülten panosu, haber grubu, posta listesi veya yorum dizisi için bir mesaj; bir web formunun bir veri işleme sürecine gönderilmesinin sonucu olan bir veri bloğu; veya veritabanına eklenecek bir ögedir.
PUT
PUT yöntemi, kapalı varlığın sağlanan URL altında depolanmasını ister. URL zaten var olan bir kaynağa başvuruyorsa, değiştirilir; URL mevcut bir kaynağa işaret etmiyorsa, sunucu bu URL ile kaynağı oluşturabilir.
DELETE
DELETE yöntemi, belirtilen kaynağı siler.
TRACE
TRACE yöntemi, alınan isteği yansıtır, böylece bir istemci, ara sunucular tarafından (varsa) hangi değişikliklerin veya eklemelerin yapıldığını görebilir.
OPTIONS
OPTIONS yöntemi, sunucunun belirtilen URL için desteklediği HTTP yöntemlerini döndürür. Bu, belirli bir kaynak yerine '*' isteyerek bir web sunucusunun işlevselliğini kontrol etmek için kullanılabilir.
CONNECT
CONNECT yöntemi, istek bağlantısını şeffaf bir TCP/IP tüneline dönüştürür, genellikle şifrelenmemiş bir HTTP proxy'si aracılığıyla SSL şifreli iletişimi (HTTPS) kolaylaştırır.
PATCH
PATCH yöntemi, bir kaynağa kısmi değişiklikler uygular.
Tüm genel amaçlı HTTP sunucularının en azından GET ve HEAD yöntemlerini uygulaması gerekir ve diğer tüm yöntemler şartnameye göre isteğe bağlı kabul edilir.
Güvenli yöntemler
Yöntemlerden bazıları (örneğin, GET, HEAD, OPTIONS ve TRACE), geleneksel olarak güvenli olarak tanımlanır, yani bunlar yalnızca bilgi alma amaçlıdır ve sunucunun durumunu değiştirmemelidir. Başka bir deyişle, günlük tutma, web önbelleğe alma, banner sunulması veya bir web sayacı artırma gibi nispeten zararsız etkilerin ötesinde yan etkileri olmamalıdır. Uygulamanın durumuna bakılmaksızın keyfi GET taleplerinde bulunmak bu nedenle güvenli kabul edilmelidir. Ancak, bu standart tarafından zorunlu kılınmamıştır ve garanti edilemeyeceği açıkça kabul edilmiştir.
Buna karşılık, POST, PUT, DELETE ve PATCH gibi yöntemler, sunucu üzerinde yan etkilere veya Elektronik ticaret veya e-posta iletimi gibi harici yan etkilere neden olabilecek eylemler için tasarlanmıştır. Bu nedenle, bu tür yöntemler genellikle uyumlu Arama robotları veya web tarayıcıları tarafından kullanılmaz; uymayanlar bağlam veya sonuçlara bakılmaksızın istekte bulunma eğilimindedir.
GET isteklerinin öngörülen güvenliğine rağmen, uygulamada bunların sunucu tarafından işlenmesi teknik olarak hiçbir şekilde sınırlı değildir. Bu nedenle, dikkatsiz veya kasıtlı programlama, sunucuda önemsiz olmayan değişikliklere neden olabilir. Bu tavsiye edilmez, çünkü web önbelleğine alma, arama motoru ve diğer otomatik aracılar için sorunlara neden olabilir ve bu da sunucuda istenmeyen değişiklikler yapabilir. Örneğin, bir web sitesi http://example.com/article/1234/delete gibi bir URL aracılığıyla bir kaynağın silinmesine izin verebilir; bu, GET kullanılarak bile keyfi olarak getirilirse, yalnızca makaleyi siler. Pratikte bunun bir örneği, bir kullanıcının görüntülediği sayfadaki rastgele URL'leri önceden getirerek kayıtların toplu olarak otomatik olarak değiştirilmesine veya silinmesine neden olan kısa ömürlü 'ın beta sürümünde meydana geldi. Beta, yaygın eleştirilerin ardından ilk sürümünden sadece haftalar sonra askıya alındı.
Etkisiz yöntemler ve web uygulamaları
PUT ve DELETE yöntemleri etkisiz olarak tanımlanır, yani birden çok özdeş isteğin tek bir istekle aynı etkiye sahip olması gerekir. GET, HEAD, OPTIONS ve TRACE yöntemleri, güvenli olarak tanımlanır ve HTTP durumsuz bir protokol olduğundan etkisiz olmalıdır.
Bunun tersine, POST yöntemi etkisiz değildir ve bu nedenle, aynı POST isteğinin birden çok kez gönderilmesi durumu daha fazla etkileyebilir veya başka yan etkilere (e-ticaret gibi) neden olabilir. Bazı durumlarda bu arzu edilebilir, ancak diğer durumlarda bu, bir kullanıcının eyleminin başka bir istek göndermesiyle sonuçlanacağını fark etmemesi veya ilk talebinin yapıldığına dair yeterli geri bildirim almaması gibi bir kazadan kaynaklanıyor olabilir. Web tarayıcıları, bir sayfanın yeniden yüklenmesinin POST isteğini yeniden gönderebileceği bazı durumlarda kullanıcıları uyarmak için uyarı iletişim kutuları gösterebilirken, POST isteğinin birden fazla kez gönderilmemesi gereken durumları ele almak genellikle web uygulamasına bağlıdır.
Bir yöntemin etkisiz olup olmadığının protokol veya web sunucusu tarafından zorlanmadığını unutulmamalıdır. Örneğin, bir veritabanı girişinin veya etkisiz olmayan başka bir eylemin bir GET veya başka bir talep tarafından tetiklendiği bir web uygulaması yazmak tamamen mümkündür. Ancak, bir kullanıcı aracısı aynı isteği tekrar etmenin güvenli olmadığına karar verirse, bu tavsiyenin göz ardı edilmesi istenmeyen sonuçlara yol açabilir.
Güvenlik
TRACE yöntemi, siteler arası izleme olarak bilinen bir saldırı sınıfının parçası olarak kullanılabilir; bu nedenle, genel güvenlik tavsiyesi, sunucu yapılandırmasında devre dışı bırakılmasıdır. Microsoft IIS, benzer şekilde davranan ve aynı şekilde devre dışı bırakılması önerilen tescilli bir "TRACK" yöntemini destekler.
Yöntem | RFC | İstek gövdesi | Yanıt gövdesi | Güvenli | Etkisiz | Bellekte tutulabilir |
---|---|---|---|---|---|---|
PATCH | RFC 5789 | Evet | Evet | Hayır | Hayır | Hayır |
POST | RFC 7231 | Evet | Evet | Hayır | Hayır | Evet |
PUT | Evet | Evet | Hayır | Evet | Hayır | |
CONNECT | Kısmen | Evet | Hayır | Hayır | Hayır | |
DELETE | Kısmen | Evet | Hayır | Evet | Hayır | |
GET | Kısmen | Evet | Evet | Evet | Evet | |
HEAD | Kısmen | Hayır | Evet | Evet | Evet | |
OPTIONS | Kısmen | Evet | Evet | Evet | Hayır | |
TRACE | Hayır | Evet | Evet | Evet | Hayır |
Yanıt mesajı
Yanıt mesajı aşağıdakilerden oluşur:
- Durum kodunu ve neden mesajını içeren bir durum satırı (örneğin, istemcinin isteğinin başarılı olduğunu belirten HTTP/1.1 200 OK)
- Yanıt başlığı alanları (örneğin, İçerik Türü: metin/html)
- Boş satır
- İsteğe bağlı mesaj bölümü
Durum satırı ve diğer başlık alanlarının tümü <CR> <LF> ile bitmelidir. Boş satır yalnızca <CR> <LF> içermeli ve başka bir boşluk olmamalıdır. <CR> <LF> için bu katı gereksinim, yalnızca <CR> veya <LF> gibi diğer sistem satır kesmelerinin tutarlı kullanımı için ileti gövdeleri içinde biraz gevşetilir.
Durum kodları
İstemci, bir web sayfası görüntülemek için bir tarayıcı ile bu siteyi oluşturmak için sunucudan web site dosyalarını istemektedir. Sunucu bu istek sonucunda bir HTTP durum kodu kullanarak yanıt oluşturmaktadır. Bu kodları HTTP durum kodu veya yanıt kodu olarak adlandırmaktayız. Her bir durum kodu farklı anlamlara gelmektedir ve bu kodlar sayfanın düzgün çalışıp çalışmadığı hakkında bilgi vermektedir. 60'tan fazla HTTP durum kodu bulunmakta. Bu durum kodlarının bazıları kullanılmamakta bazıları ile de sıkça karşılaşmamaktayız bu kodların bazıları ise gelecekte kullanılmak için hazırlanmış kodlardır. SEO çalışmalarında veya site tarama analizlerinde karşılaşılan en yangın durum kodları 5 başlık altında incelenmektedir.
- 1xx Bilgilendirme
- 2xx Başarılı
- 3xx Yönlendirme
- 4xx İstemci Hatası
- 5xx Sunucu Hatası
1xx Durum kodları
1xx HTTP durum kodları bilgilendirme kodları olarak tanımlanmakta. İstemcinin isteği sunucu ulaşıldığı ve işlemin başladığına dair bilgilendirme kodlarını ifade eden durum kodlarıdır. Sunucu tarafından cevap oluştuktan sonra kaldırılırlar. Bu kodlarının bazıları ile daha sık karşılaşılmaktadır.
100: İstemci tarafından gönderilen isteğin başlığı sunucu tarafından alındığı ve gövdesinin de alınmaya hazır olduğunu ifade etmektedir.
101: İstemcinin Sunucudan protokol değiştirmesini talep ettiği ve sunucun talebi kabul ettiğini ifade etmektedir.
2xx Durum Kodları
İstemcinin isteklerine sunucunun başarılı verdiğini ifade eden durum kodlarıdır. SEO denetimleri için bu sayfaların sorunsuz çalıştığını ifade etmektedir. Genellikle sayfaların 2xx kodları döndürmesini bekleriz. 2xx içerisinde farklı anlamlara gelen sıkça karşılaşılan 2xx durum kodları bulunmakta.
200: OK yanıt kodu olarak tanımlanmakta ideal durum kodudur. Sayfaların sorunsuz bir şekilde çalıştığını ifade eder.
201: Oluşturuldu durum olarak tanımlanmakta. Sunucu yapılan isteği kabul eder ve işleme süreci başlar bunun sonucunda istek yerine getirilebilir ya da getirilemez.
204: İçerik yok yanıt kodu olarak ifade edilmekte. Sunucu isteği başarılı bir şekilde işleme koydu ve istemciye geri gönderilecek veri bulunmadığı ifade etmektedir.
205: İçeriği sıfırla yanıt olarak tanımlanmakta. Sunucu işleme başarılı bir şekilde işleme koydu fakat istek gönderenden belge görünümü sıfırlanmasını istemekte ve herhangi bir içerik döndürmemektedir.
206: Kısmi içerik yanıt kodu olarak ifade edilmekte. Sunucu istemci tarafından gönderilen bir aralık bağlılığı nedeniyle kaynağın yalnızca bir kısmını göndermekte. Aralık başlığı HTTP istemcileri tarafından kesintiye uğramış ve indirmelerin devam ettirilmesini sağlamak veya bir indirmeyi birden çok eş zamanlı akışa bölmek için kullanılır.
207: Çoklu durum yanıt kodu olarak ifade edilmekte. Takip eden mesaj gövdesi bir XML masajıdır ve kaç tane alt istekle bulunduğuna bağlı olarak bir dizi ayrı yanıt kodu oluşturabilmekte. Bu durum kodu birden çok durum kodunun doğru olabildiği durumlarda kullanılmakta.
3xx Durum Kodları
Geçici veya kalıcı yönlendirme kodlarıdır. Bu kodlar sayfaların SOE değerini korumak için önemlidir. 3xx durum kodları kendi içerisinde farklı anlamlara gelen farklı durum kodlarından oluşmaktadır.
301: Kalıcı yönlendirme durum kodu olarak ifade edilmekte .Bir web sayfasının kalıcı olarak bir başka web sayfasına yönlendirildiği ve sayfayı ziyaret eden kullanıcının da otomatik olarak yönlenmesini sağlayan durum kodudur.
302:Geçici yönlendirme durum kodu olarak ifade edilmekte. Bir web sayfasının geçici olarak bir başka web sayfasına yönlendirildiğini ifade eden durum kodudur. 301 yönlendirme kodundan farkı ilgili sayfanın test aşamasında olması, bakıma alınması ya da bir e-ticaret sitesi için ilgili ürünün stoklarının geçici olarak tükenmesi gibi ilgili sayfanın tekrar aktif edileceği durumlarda kullanılmasıdır. Fakat kullanıcılar 301 yönlendirmesi ile 302 yönlendirmesi arasındaki farkı anlamayacaktır. İlgili sayfaya giriş yapan kullanıcılar direkt olarak diğer sayfaya yönlendirilmektedir.
307: Geçici Yeniden Yönlendirme kodu olarak ifade edilmektedir. 302 gibi bir bir kaynağa geçici olarak yönlendirmeyi ifade eder.
308: Bir kaynağın kalıcı olarak farklı bir kaynağa taşındığını ifade eden durum kodudur. 301 durum kodundan farklı olarak HTTP yönetiminin değişmesine izin vermez.
4xx Durum kodları
İstemci hata kodları olarak ifade edilmektedir. SEO denetimleri yapılırken en çok dikkat edilen durum kodlarıdır. Bu durum kodlarından bazıları ile daha sık karşılaşılır.
400: hatalı istek durum kodu olarak ifade edilir. Sunucunun istemciden kaynaklanan hatadan dolayı isteği yerine getirememesidir.
403:Yasaklanmış içerik. Sunucu Yapılan isteği anlar fakat reddettiği durumlarda bu durum kodunu döndürmekte.
404: Sayfa bulunamadı olarak ifade edilir. En çok karşılaşılan HTTP durum kodudur. İstenilen kaynağın bulunamadığı fakat gelecekte bulanabileceği anlamına gelir bu yüzden bu hatayı düzeltmek için genellikle 3xx yönlendirme kodları kullanılmakta ya da özel 404 sayfaları oluşturulmakta.
5xx Durum Kodları
Sunucu hataları ifade eden durum kodlarıdır. Sunucular istekleri işleyemediklerinde bu durum kodlarını döndürmekte. Kullanıcılar tarafında sayfa görüntülenemez.
500:Sunucu hatası olarak ifade edilir. Beklenmeyen bir durumla karşılaşıldığında Sunucular bu kodları döndürmekte.
502:Sunucunun başka bir sunucuya istek gönderdikten sonra geçersiz yanıt aldığı anlamına gelen durum kodudur.
504:Bir isteği işlerken bir sunucunun diğer sunucudan yanıt beklerken isteğin zaman aşımına uğraması durumunda görülen durum kodudur.
505:HTTP protokol sürümünün desteklenemediği anlamında gelen durum kodudur.
511:Kullanılmak istenen ağın isteği sunucuya iletmeden önce kimlik doğrulaması yapması gerektiği durumlarda görülen durum kodudur.
Şifrelenmiş bağlantı
Şifreli bir HTTP bağlantısı kurmanın en popüler yolu HTTPS'dir. Şifreli bir HTTP bağlantısı kurmak için iki başka yöntem de mevcuttur: Güvenli Köprü Metni Aktarım Protokolü ve TLS'ye yükseltme belirtmek için HTTP/1.1 Yükseltme başlığını kullanma. Ancak bu ikisi için tarayıcı desteği neredeyse yoktur.
Örnek oturum
Aşağıda, bir HTTP istemcisi ile www.example.com, bağlantı noktası 80 üzerinde çalışan bir HTTP sunucusu arasındaki örnek bir konuşma bulunmaktadır.
İstemci isteği
GET / HTTP/1.1 Host: www.example.com
Bir istemci isteğini (bu durumda istek satırı ve yalnızca bir başlık alanından oluşur) boş bir satır izler, böylece istek, her biri satır başı şeklinde olan çift satır sonu ile biter. "Ana Bilgisayar" alanı, tek bir IP adresini paylaşan çeşitli DNS adları arasında ayrım yaparak isme dayalı sanal barındırmaya izin verir. HTTP / 1.0'da isteğe bağlı olsa da, HTTP / 1.1'de zorunludur. ("/", Varsa /index.html anlamına gelir.)
Sunucu yanıtı
HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 155 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) ETag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Connection: close <html> <head> <title>An Example Page</title> </head> <body> <p>Hello World, this is a very simple HTML document.</p> </body> </html>
ETag (varlık etiketi) başlık alanı, istenen kaynağın önbelleğe alınmış bir sürümünün sunucudaki kaynağın geçerli sürümüyle aynı olup olmadığını belirlemek için kullanılır. Content-Type, HTTP mesajı tarafından taşınan verinin İnternet ortam tipini belirtirken Content-Length, uzunluğunu bayt cinsinden belirtir. HTTP/1.1 web sunucusu, Accept-Ranges: bayt alanını ayarlayarak belgenin belirli bayt aralıklarına yönelik isteklere yanıt verme yeteneğini yayınlar. Bu, istemcinin, bayt hizmeti olarak adlandırılan, sunucu tarafından gönderilen bir kaynağın yalnızca belirli kısımlarına sahip olması gerekiyorsa yararlıdır. Connection: close gönderildiğinde, web sunucusunun bu yanıtın aktarılmasından hemen sonra TCP bağlantısını kapatacağı anlamına gelir.
Başlık satırlarının çoğu isteğe bağlıdır. İçerik Uzunluğu eksik olduğunda, uzunluk başka yollarla belirlenir. Parçalı aktarım kodlaması, içeriğin sonunu işaretlemek için yığın boyutu 0 kullanır. İçerik Uzunluğu olmadan kimlik kodlaması, soket kapanana kadar içeriği okur.
Gzip gibi bir sıkıştırma programı, iletilen verileri sıkıştırmak için kullanılabilir.
Benzer protokoller
- Gopher protokolü, 1990'ların başlarında HTTP tarafından değiştirilen bir içerik teslim protokolüdür.
- SPDY protokolü, Google'da geliştirilen ve (HTTP/2)'nin yerini alan HTTP'ye bir alternatiftir.
- Gemini protokolü, gizlilikle ilgili özellikleri zorunlu kılan, Gopher'dan ilham alan bir protokoldür.
Ayrıca bakınız
Wikimedia Commons'ta HTTP ile ilgili ortam dosyaları bulunmaktadır. |
Kaynakça
- World-Wide Web Consortium ana sayfası2 Aralık 2002 tarihinde Wayback Machine sitesinde .
- RFC2616 HTTP/1.1 iletişim kuralının tanımlandığı RFC 21 Şubat 2004 tarihinde Wayback Machine sitesinde . (FTP erişimi)
- ^ a b c d e f g Fielding, R.; Gettys, J.; Mogul, J.; Frystyk, H.; Masinter, L.; Leach, P.; Berners-Lee, T. (Haziran 1996). "Hypertext Transfer Protocol -- HTTP/1.1" (İngilizce): RFC2616. doi:10.17487/rfc2616. 9 Ağustos 2020 tarihinde kaynağından .
- ^ "Can I use... Support tables for HTML5, CSS3, etc". caniuse.com. 19 Şubat 2018 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ Friedl, Stephan; Langley, Adam; Popov, Andrey. "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension". tools.ietf.org (İngilizce). 10 Ekim 2014 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ Belshe, M.; Peon, R.; Thomson, M. (30 Mayıs 2015). . http2.github.io (İngilizce). 15 Temmuz 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ Bishop <mbishop@evequefou.be>, Mike. "Hypertext Transfer Protocol Version 3 (HTTP/3)". tools.ietf.org (İngilizce). 17 Temmuz 2019 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ Cimpanu, Catalin. "HTTP-over-QUIC to be renamed HTTP/3". ZDNet (İngilizce). 13 Kasım 2018 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ Cimpanu, Catalin. "Cloudflare, Google Chrome, and Firefox add HTTP/3 support". ZDNet (İngilizce). 26 Eylül 2019 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ "HTTP/3: the past, the present, and the future". The Cloudflare Blog (İngilizce). 26 Eylül 2019. 26 Eylül 2019 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ . Cloudflare Community (İngilizce). 6 Kasım 2019. 6 Haziran 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . bidb.itu.edu.tr. 1 Kasım 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Nisan 2023.
- ^ "Evolution of HTTP - HTTP | MDN". developer.mozilla.org (İngilizce). 27 Mart 2023 tarihinde kaynağından . Erişim tarihi: 27 Mart 2023.
- ^ . www.w3.org. 7 Haziran 1997 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . www.w3.org. 5 Haziran 1997 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . www.w3.org. 3 Temmuz 1998 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . www.w3.org. 6 Ocak 2008 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . www.w3.org. 8 Ocak 2008 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . webarchive.loc.gov. 26 Nisan 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . IETF HTTP Working Group (İngilizce). 19 Şubat 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ a b c d Fielding, R.; Gettys, J.; Mogul, J.; Frystyk, H.; Masinter, L.; Leach, P.; Berners-Lee, T. (Haziran 1999). "Hypertext Transfer Protocol -- HTTP/1.1" (İngilizce): RFC2616. doi:10.17487/rfc2616. 9 Ağustos 2020 tarihinde kaynağından .
- ^ a b Fielding, R.; Reschke, J., (Ed.) (Haziran 2014). "Hypertext Transfer Protocol (HTTP/1.1): Authentication" (İngilizce): RFC7235. doi:10.17487/rfc7235. 7 Ağustos 2020 tarihinde kaynağından .
- ^ . www.apacheweek.com. 14 Mart 2006 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ Berners-Lee, T.; Fielding, R.; Frystyk, H. (Mayıs 1996). "Hypertext Transfer Protocol -- HTTP/1.0" (İngilizce): RFC1945. doi:10.17487/rfc1945. 8 Ağustos 2020 tarihinde kaynağından .
- ^ a b Fielding, Roy; Reschke, Julian. "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing". tools.ietf.org (İngilizce). 14 Temmuz 2014 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ Fielding, Roy; Reschke, Julian. "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content". tools.ietf.org (İngilizce). 14 Temmuz 2014 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ . www.w3.org. 17 Mayıs 2003 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ Khare, R.; Lawrence, S. (Mayıs 2000). "Upgrading to TLS Within HTTP/1.1" (İngilizce): RFC2817. doi:10.17487/rfc2817. 8 Ağustos 2020 tarihinde kaynağından .
- ^ . www.kb.cert.org. 15 Haziran 2002 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ Dusseault, L.; Snell, J. (Mart 2010). "PATCH Method for HTTP" (İngilizce): RFC5789. doi:10.17487/rfc5789. 8 Ağustos 2020 tarihinde kaynağından .
- ^ a b Ediger, Brad. (2008). Advanced Rails. Farnham: O'Reilly. ISBN . OCLC 213482728.
- ^ Cantrell, Christian (1 Haziran 2005). . Adobe. 19 Ağustos 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Ağustos 2020.
- ^ . owasp.org (İngilizce). 28 Nisan 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ "HTTP durum kodları". 2 Eki 2020. 27 Mart 2023 tarihinde kaynağından . Erişim tarihi: 27 Mart 2023.
- ^ Savaş (22 Ocak 2022). "IdeaSoft E-ticaret Paketleri ve E-ticaret Sitesi Yazılımları". IdeaSoft. 27 Mart 2023 tarihinde kaynağından . Erişim tarihi: 27 Mart 2023.
- ^ "HTTP Durum Kodları Rehberi". zeo.org. 27 Mart 2023 tarihinde kaynağından . Erişim tarihi: 27 Mart 2023.
- ^ Canavan, John E. (2001). Fundamentals of network security. Boston: Artech House. ISBN . OCLC 45172884.
- ^ "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. 1 Mart 2016 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ . bugs.chromium.org. 8 Temmuz 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ . bugzilla.mozilla.org (İngilizce). 14 Mart 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Ağustos 2020.
- ^ Franks, John; Luotonen, Ari. "Byte Range Retrieval Extension to HTTP". tools.ietf.org (İngilizce). 30 Kasım 2010 tarihinde kaynağından . Erişim tarihi: 7 Ağustos 2020.
- ^ "HTTP benzer protokoller". 19 Mart 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Mart 2023.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
HTTP Ingilizce Hyper Text Transfer Protocol Turkce Hiper Metin Transfer Protokolu bir kaynaktan dagitilan ve ortak kullanima acik olan hiperortam bilgi sistemleri icin uygulama seviyesinde bir iletisim protokoludur HTTP World Wide Web icin veri iletisiminin temelidir burada kopru metni belgeleri ornegin bir fare tiklamasiyla veya bir web tarayicisinda ekrana dokunarak kullanicinin kolayca erisebilecegi diger kaynaklara kopruler icerir Internet iletisim kurallari dizisi OSI modeliKatman Iletisim kurallari7 Uygulama katmani HTTP DNS SMTP FTP TFTP UUCP NNTP SSL SSH IRC SNMP SIP RTP Telnet 6 Sunum katmani ISO 8822 ISO 8823 ISO 8824 ITU T T 73 ITU T X 409 5 Oturum katmani NFS SMB ISO 8326 ISO 8327 ITU T T 6299 4 Ulasim katmani TCP UDP SCTP DCCP 3 Ag katmani IP IPv4 IPv6 ICMP ARP Internet Grup Yonetim Protokolu IPX 2 Veri baglantisi katmani Ethernet HDLC Wi Fi Token ring FDDI PPP L2TP 1 Donanim katmani ISDN RS 232 EIA 422 RS 449 EIA 485 HTTP 1989 da CERN de Tim Berners Lee tarafindan gelistirilmeye baslandi Yorumlara yonelik erken HTTP taleplerinin RFC ler gelistirilmesi Internet Muhendisligi Gorev Gucu IETF ve World Wide Web Consortium W3C tarafindan koordine edilmis bir calismadir Daha sonra IETF e tasinmistir HTTP 1 1 ilk olarak 1997 de RFC 2068 de belgelendi Bu sartname 1999 da RFC 2616 nin gelmesiyle iptal edildi ve ayni sekilde 2014 te RFC 7230 ile degistirildi HTTP 2 HTTP nin kablolu semantiginin daha verimli bir ifadesidir 2015 te yayinlanmistir artik hemen hemen tum web tarayicilari ve TLS 1 2 veya daha yenisinin gerekli oldugu bir Uygulama Katmani Protokol Anlasmasi ALPN uzantisi kullanan Tasima Katmani Guvenligi TLS uzerinden buyuk web sunuculari tarafindan desteklenmektedir HTTP 2 nin halihazirda web de kullanimda olan ve temeldeki aktarim protokolu icin TCP yerine UDP kullanan ardilidir HTTP 3 Eylul 2019 da Cloudflare ve Google Chrome tarafindan desteklenmeye basladi Chrome ve Firefox un kararli surumlerinde etkinlestirilebilir Teknik genel bakisHTTP istemci sunucu bilgi islem modelinde bir istek yanit protokolu olarak islev gorur Ornegin bir web tarayicisi istemci olabilir veya bir web sitesini barindiran bir barindirma hizmetinde calisan bir uygulama sunucu olabilir Istemci sunucuya bir HTTP istek mesaji gonderir HTML dosyalari ve diger icerik gibi kaynaklari saglayan veya istemci adina diger islevleri gerceklestiren sunucu istemciye bir yanit mesaji verir Yanit istekle ilgili tamamlanma durumu bilgilerini icerir ayrica mesaj govdesinde istenen icerigi gosterebilir HTTP ara ag ogelerinin istemciler ve sunucular arasindaki iletisimi iyilestirmesine veya etkinlestirmesine izin vermek icin tasarlanmistir Yuksek trafikli web siteleri genellikle yanit suresini iyilestirmek icin yukari akis sunuculari adina icerik saglayan web onbellek sunucularindan yararlanir Web tarayicilari onceden erisilen web kaynaklarini onbellege alir ve ag trafigini azaltmak icin mumkun oldugunca bunlari yeniden kullanir Ozel ag sinirlarindaki HTTP vekil sunuculari mesajlari harici sunucularla aktararak genel olarak yonlendirilebilir bir adrese sahip olmayan istemciler icin iletisimi kolaylastirabilir HTTP Internet iletisim kurallari dizisi paketi cercevesinde tasarlanmis bir uygulama katmani protokoludur Iletim Kontrol Protokolu TCP yaygin olarak kullanilmaktadir Ancak HTTP Kullanici Datagram Protokolu UDP gibi guvenilmez protokolleri ornegin HTTPU ve Basit Hizmet Kesif Protokolu SSDP gibi kullanacak sekilde uyarlanabilir HTTP kaynaklari Tekduzen Kaynak Tanimlayicilari URL ler semalari http ve https kullanilarak Tekduzen Kaynak Konum Belirleyicileri URL ler tarafindan tanimlanir RFC 3986 da tanimlandigi gibi URL ler HTML belgelerinde kopruler olarak kodlanir boylece birbirine bagli kopru belgeleri olusturulur HTTP 1 1 orijinal HTTP nin HTTP 1 0 bir revizyonudur HTTP 1 0 da her istek icin sunucuya ayri bir baglanti yapilmasi gerekir HTTP 1 1 de ise tek bir baglanti ile birden fazla istek yapilabilir Bu nedenle HTTP 1 1 iletisimleri daha az gecikme yasar HTTP 2 0 protokol perfonmansini iyilestirmek icin ortaya cikti Cunku HTTP 1 1 sirali bir protokol olup her seferinde tek bir istek gonderilebilir HTTP 2 0 de ise zaman uyumsuz olarak istek gondermeye ve yanit almaya izin verir HTTP 3 0 nin HTTP 2 0 dan farki kullanilan tasima katmani protokoludur HTTP 2 0 TLS iceren veya icermeyen TCP baglantilari varken HTTP 3 0 da QUIC Hizli UDP Internet Baglantilari uzerine tasarlanmistir HTTP 3 0 in avantajlari daha iyi iletim hizi daha kisa yukleme sureleri ve daha kararli bir baglanti saglar TarihceTim Berners Lee Hiper metin terimi ilk kez tarafindan 1965 te nde ortaya atildi Bu da Vannevar Bush un 1930 lardaki mikrofilm temelli bilgi erisim ve yonetim sistemi in vizyonundan esinlenerek 1945 tarihli adli makalesinde anlatildi Tim Berners Lee ve CERN deki ekibi orijinal HTTP yi HTML i ve bir web sunucusu ve metin tabanli bir web tarayici icin ilgili teknolojiyi icat etmekle taninir Ayrica Berners Lee ilk olarak 1989 yilinda WorldWideWeb projesini onerdi gunumuzde World Wide Web olarak bilinmektedir Protokolun ilk surumunde bir sunucudan bir sayfa talep edecek GET adinda tek bir yontem bulunuyordu HTTP nin belgelenen ilk surumu 1991 de yayinlanan HTTP V0 9 du 1995 yilinda HTTP Calisma Grubunu HTTP WG yonetti ve protokolu ek yontemler ve baslik alanlari ekleyerek daha verimli hale gelen bir guvenlik protokolune bagli genisletilmis islemler genisletilmis gorusme daha zengin meta bilgilerle genisletmek istedi RFC 1945 ise 1996 da resmi olarak HTTP V1 0 i tanitti HTTP WG Aralik 1995 te yeni standartlar yayinlamayi planladi ve daha sonra gelismekte olan RFC 2068 e HTTP NG olarak adlandirilir dayanan on standart HTTP 1 1 destegi 1996 nin baslarinda buyuk tarayici gelistiricileri tarafindan hizla benimsendi Yeni tarayicilarin son kullanicilar tarafindan benimsenmesi hizli oldu Mart 1996 da bir web barindirma sirketi internette kullanilan tarayicilarin 40 indan fazlasinin HTTP 1 1 uyumlu oldugunu bildirdi Ayni web barindirma sirketi Haziran 1996 itibariyla sunucularina erisen tum tarayicilarin 65 inin HTTP 1 1 uyumlu oldugunu bildirdi RFC 2068 de tanimlanan HTTP 1 1 standardi resmi olarak Ocak 1997 de yayinlandi Daha sonra yapilan iyilestirmeler ve guncellemeler Haziran 1999 da RFC 2616 kapsaminda yayinlandi 2007 de HTTP 1 1 spesifikasyonunu revize etmek ve acikliga kavusturmak icin kismen HTTP Calisma Grubu olusturuldu Haziran 2014 te WG RFC 2616 yi gecersiz kilan guncellenmis alti bolumlu bir spesifikasyon yayinladi RFC 7230 HTTP 1 1 Mesaj Sozdizimi ve Yonlendirme RFC 7231 HTTP 1 1 Anlambilim ve Icerik RFC 7232 HTTP 1 1 Kosullu Istekler RFC 7233 HTTP 1 1 Aralik Istekleri RFC 7234 HTTP 1 1 Onbellek RFC 7235 HTTP 1 1 Kimlik Dogrulama HTTP 2 ise Mayis 2015 te RFC 7540 olarak yayinlandi Yil Versiyon1991 HTTP 0 91996 HTTP 1 01997 HTTP 1 12015 HTTP 22022 HTTP 3HTTP oturumuTelnet kullanilarak yapilan bir HTTP 1 1 istegi Istek mesaji yanit basligi bolumu ve yanit govdesi vurgulanir Bir HTTP oturumu bir ag istek yanit islemleri dizisidir HTTP istemcisi bir sunucudaki belirli bir baglanti noktasina tipik olarak 80 numarali baglanti noktasi bazen 8080 numarali baglanti noktasi bir Iletim Kontrol Protokolu TCP baglantisi kurarak bir istek baslatir TCP ve UDP port numaralari listesine bakiniz Bu port uzerinde dinleyen bir HTTP sunucusu bir istemcinin istek mesajini bekler Istegi aldiktan sonra sunucu HTTP 1 1 200 OK gibi bir durum satiri ve kendisine ait bir mesaj gonderir Bu mesajin govdesi tipik olarak talep edilen kaynaktir ancak bir hata mesaji veya baska bilgiler de dondurulebilir Kalici baglantilar HTTP 0 9 ve 1 0 da baglanti tek bir istek yanit ciftinden sonra kapatilir HTTP 1 1 de bir baglantinin birden fazla istek icin yeniden kullanilabilecegi bir canli tutma mekanizmasi tanitildi Bu tur kalici baglantilar istemcinin ilk istek gonderildikten sonra TCP 3 Yollu El Sikisma baglantisini yeniden iletmesi gerekmediginden istek gecikmesini hissedilir sekilde azaltir Diger bir olumlu yan etki genel olarak TCP nin yavas baslatma mekanizmasi nedeniyle baglantinin zamanla daha hizli hale gelmesidir Protokolun 1 1 surumu ayrica HTTP 1 0 icin bant genisligi optimizasyonu iyilestirmeleri yapti Ornegin HTTP 1 1 kalici baglantilardaki icerigin ara bellege alinmak yerine akisa alinmasina izin vermek icin parcali aktarim kodlamasi getirmistir HTTP ardisik duzeni gecikme suresini daha da azaltarak istemcilerin her yaniti beklemeden once birden cok istek gondermesine olanak tanir Protokole bir baska ek bir sunucunun bir istemci tarafindan acikca talep edilen bir kaynagin sadece bir kismini ilettigi bayt hizmetiydi Oturum durumu HTTP durum bilgisiz bir protokoldur Durum bilgisi olmayan bir protokol HTTP sunucusunun birden cok istek suresi boyunca her bir kullanici hakkindaki bilgileri veya durumu saklamasini gerektirmez Ancak bazi web uygulamalari ornegin HTTP tanimlama bilgilerini veya web formlari icindeki gizli degiskenleri kullanarak durumlar veya sunucu tarafi oturumlari uygular HTTP kimlik dogrulamasiHTTP temel erisim kimlik dogrulamasi ve ozet erisim kimlik dogrulamasi gibi sunucunun istenen icerigi sunmadan once bir sinamayi tanimlayip yayinladigi bir sinama yanit mekanizmasi araciligiyla calisan coklu kimlik dogrulama semalari saglar HTTP bir sunucu tarafindan bir istemci istegini sorgulamak icin ve bir istemci tarafindan kimlik dogrulama bilgilerini saglamak icin kullanilabilen genisletilebilir bir dizi sinama yanit kimlik dogrulama semalari araciligiyla erisim kontrolu ve kimlik dogrulamasi icin genel bir cerceve saglar Kimlik dogrulama HTTP Kimlik Dogrulamasi belirtimi ayrica belirli bir kok URL de ortak olan kaynaklari daha fazla bolmek icin rastgele uygulamaya ozgu bir yapi saglar Bolge degeri dizesi varsa meydan okumanin koruma alani bilesenini olusturmak icin kuralli kok URL ile birlestirilir Bu sunucunun tek bir kok URL altinda ayri kimlik dogrulama kapsamlari tanimlamasina izin verir Mesaj bicimiIstemci sunucuya istek gonderir ve sunucu yanitlar gonderir Mesaj istegi Istek mesaji asagidakilerden olusur Bir istek satiri ornegin sunucudan images logo png adli bir kaynak isteyen GET images logo png HTTP 1 1 Baslik alanlari ornegin Accept Language en Bos satir Istege bagli mesaj bolumu Istek satiri ve diger baslik alanlarinin her biri lt CR gt lt LF gt ile bitmelidir Bir satir basi karakteri ve ardindan bir satir besleme karakteri Bos satir yalnizca lt CR gt lt LF gt icermeli ve baska bir bosluk olmamalidir HTTP 1 1 protokolunde ana bilgisayar disindaki tum baslik alanlari istege baglidir Yalnizca yol adini iceren bir istek satiri RFC 1945 teki HTTP 1 0 belirtiminden once HTTP istemcileriyle uyumlulugu korumak icin sunucular tarafindan kabul edilir Istek yontemleri HTTP tanimlanan kaynakta gerceklestirilmesi istenen eylemi belirtmek icin yontemleri tanimlar bazen fiil olarak adlandirilir ancak spesifikasyonun hicbir yerinde fiilden bahsedilmez ve OPTIONS veya HEAD bir fiil degildir Onceden var olan veriler veya dinamik olarak olusturulan veriler olsun bu kaynagin neyi temsil ettigi sunucunun uygulanmasina baglidir Cogu zaman kaynak bir dosyaya veya sunucuda bulunan bir yurutulebilir dosyanin ciktisina karsilik gelir HTTP 1 0 spesifikasyonu GET HEAD ve POST yontemlerini tanimladi ve HTTP 1 1 spesifikasyonu bes yeni yontem ekledi OPTIONS PUT DELETE TRACE ve CONNECT Bu belgelerde belirtilerek anlambilimleri iyi bilinir ve bunlara guvenilebilir Herhangi bir istemci herhangi bir yontemi kullanabilir ve sunucu herhangi bir yontem kombinasyonunu destekleyecek sekilde yapilandirilabilir Bir yontem bir ara madde tarafindan bilinmiyorsa guvenli olmayan ve etkisiz olmayan bir yontem olarak ele alinacaktir Tanimlanabilecek yontem sayisinda herhangi bir sinirlama yoktur ve bu mevcut altyapiyi bozmadan gelecekteki yontemlerin belirlenmesine olanak tanir Ornegin WebDAV yedi yeni yontem tanimladi ve RFC 5789 PATCH yontemini belirledi Yontem adlari buyuk kucuk harfe duyarlidir Bu buyuk kucuk harfe duyarli olmayan HTTP baslik alani adlarinin tersidir GET GET yontemi belirtilen kaynagin bir temsilini ister GET kullanan istekler yalnizca verileri almali ve baska bir etkisi olmamalidir Bu diger bazi HTTP yontemleri icin de gecerlidir W3C bu ayrimla ilgili kilavuz ilkeler yayinladi ve Web uygulamasi tasarimi yukaridaki ilkelerle ve ayni zamanda ilgili sinirlamalarla bilgilendirilmelidir seklinde aciklama yapti HEAD HEAD yontemi GET istegiyle ayni olan ancak yanit govdesi olmayan bir yanit ister Bu tum icerigi tasimak zorunda kalmadan yanit basliklarinda yazilan meta bilgileri almak icin kullanislidir POST POST yontemi sunucunun talepte yer alan varligi URL tarafindan tanimlanan web kaynaginin yeni bir alt ogesi olarak kabul etmesini ister POST edilen veriler ornegin mevcut kaynaklar icin bir aciklama olabilir bir bulten panosu haber grubu posta listesi veya yorum dizisi icin bir mesaj bir web formunun bir veri isleme surecine gonderilmesinin sonucu olan bir veri blogu veya veritabanina eklenecek bir ogedir PUT PUT yontemi kapali varligin saglanan URL altinda depolanmasini ister URL zaten var olan bir kaynaga basvuruyorsa degistirilir URL mevcut bir kaynaga isaret etmiyorsa sunucu bu URL ile kaynagi olusturabilir DELETE DELETE yontemi belirtilen kaynagi siler TRACE TRACE yontemi alinan istegi yansitir boylece bir istemci ara sunucular tarafindan varsa hangi degisikliklerin veya eklemelerin yapildigini gorebilir OPTIONS OPTIONS yontemi sunucunun belirtilen URL icin destekledigi HTTP yontemlerini dondurur Bu belirli bir kaynak yerine isteyerek bir web sunucusunun islevselligini kontrol etmek icin kullanilabilir CONNECT CONNECT yontemi istek baglantisini seffaf bir TCP IP tuneline donusturur genellikle sifrelenmemis bir HTTP proxy si araciligiyla SSL sifreli iletisimi HTTPS kolaylastirir PATCH PATCH yontemi bir kaynaga kismi degisiklikler uygular Tum genel amacli HTTP sunucularinin en azindan GET ve HEAD yontemlerini uygulamasi gerekir ve diger tum yontemler sartnameye gore istege bagli kabul edilir Guvenli yontemler Yontemlerden bazilari ornegin GET HEAD OPTIONS ve TRACE geleneksel olarak guvenli olarak tanimlanir yani bunlar yalnizca bilgi alma amaclidir ve sunucunun durumunu degistirmemelidir Baska bir deyisle gunluk tutma web onbellege alma banner sunulmasi veya bir web sayaci artirma gibi nispeten zararsiz etkilerin otesinde yan etkileri olmamalidir Uygulamanin durumuna bakilmaksizin keyfi GET taleplerinde bulunmak bu nedenle guvenli kabul edilmelidir Ancak bu standart tarafindan zorunlu kilinmamistir ve garanti edilemeyecegi acikca kabul edilmistir Buna karsilik POST PUT DELETE ve PATCH gibi yontemler sunucu uzerinde yan etkilere veya Elektronik ticaret veya e posta iletimi gibi harici yan etkilere neden olabilecek eylemler icin tasarlanmistir Bu nedenle bu tur yontemler genellikle uyumlu Arama robotlari veya web tarayicilari tarafindan kullanilmaz uymayanlar baglam veya sonuclara bakilmaksizin istekte bulunma egilimindedir GET isteklerinin ongorulen guvenligine ragmen uygulamada bunlarin sunucu tarafindan islenmesi teknik olarak hicbir sekilde sinirli degildir Bu nedenle dikkatsiz veya kasitli programlama sunucuda onemsiz olmayan degisikliklere neden olabilir Bu tavsiye edilmez cunku web onbellegine alma arama motoru ve diger otomatik aracilar icin sorunlara neden olabilir ve bu da sunucuda istenmeyen degisiklikler yapabilir Ornegin bir web sitesi http example com article 1234 delete gibi bir URL araciligiyla bir kaynagin silinmesine izin verebilir bu GET kullanilarak bile keyfi olarak getirilirse yalnizca makaleyi siler Pratikte bunun bir ornegi bir kullanicinin goruntuledigi sayfadaki rastgele URL leri onceden getirerek kayitlarin toplu olarak otomatik olarak degistirilmesine veya silinmesine neden olan kisa omurlu in beta surumunde meydana geldi Beta yaygin elestirilerin ardindan ilk surumunden sadece haftalar sonra askiya alindi Etkisiz yontemler ve web uygulamalari PUT ve DELETE yontemleri etkisiz olarak tanimlanir yani birden cok ozdes istegin tek bir istekle ayni etkiye sahip olmasi gerekir GET HEAD OPTIONS ve TRACE yontemleri guvenli olarak tanimlanir ve HTTP durumsuz bir protokol oldugundan etkisiz olmalidir Bunun tersine POST yontemi etkisiz degildir ve bu nedenle ayni POST isteginin birden cok kez gonderilmesi durumu daha fazla etkileyebilir veya baska yan etkilere e ticaret gibi neden olabilir Bazi durumlarda bu arzu edilebilir ancak diger durumlarda bu bir kullanicinin eyleminin baska bir istek gondermesiyle sonuclanacagini fark etmemesi veya ilk talebinin yapildigina dair yeterli geri bildirim almamasi gibi bir kazadan kaynaklaniyor olabilir Web tarayicilari bir sayfanin yeniden yuklenmesinin POST istegini yeniden gonderebilecegi bazi durumlarda kullanicilari uyarmak icin uyari iletisim kutulari gosterebilirken POST isteginin birden fazla kez gonderilmemesi gereken durumlari ele almak genellikle web uygulamasina baglidir Bir yontemin etkisiz olup olmadiginin protokol veya web sunucusu tarafindan zorlanmadigini unutulmamalidir Ornegin bir veritabani girisinin veya etkisiz olmayan baska bir eylemin bir GET veya baska bir talep tarafindan tetiklendigi bir web uygulamasi yazmak tamamen mumkundur Ancak bir kullanici aracisi ayni istegi tekrar etmenin guvenli olmadigina karar verirse bu tavsiyenin goz ardi edilmesi istenmeyen sonuclara yol acabilir Guvenlik TRACE yontemi siteler arasi izleme olarak bilinen bir saldiri sinifinin parcasi olarak kullanilabilir bu nedenle genel guvenlik tavsiyesi sunucu yapilandirmasinda devre disi birakilmasidir Microsoft IIS benzer sekilde davranan ve ayni sekilde devre disi birakilmasi onerilen tescilli bir TRACK yontemini destekler Yontem RFC Istek govdesi Yanit govdesi Guvenli Etkisiz Bellekte tutulabilirPATCH RFC 5789 Evet Evet Hayir Hayir HayirPOST RFC 7231 Evet Evet Hayir Hayir EvetPUT Evet Evet Hayir Evet HayirCONNECT Kismen Evet Hayir Hayir HayirDELETE Kismen Evet Hayir Evet HayirGET Kismen Evet Evet Evet EvetHEAD Kismen Hayir Evet Evet EvetOPTIONS Kismen Evet Evet Evet HayirTRACE Hayir Evet Evet Evet HayirYanit mesaji Yanit mesaji asagidakilerden olusur Durum kodunu ve neden mesajini iceren bir durum satiri ornegin istemcinin isteginin basarili oldugunu belirten HTTP 1 1 200 OK Yanit basligi alanlari ornegin Icerik Turu metin html Bos satir Istege bagli mesaj bolumu Durum satiri ve diger baslik alanlarinin tumu lt CR gt lt LF gt ile bitmelidir Bos satir yalnizca lt CR gt lt LF gt icermeli ve baska bir bosluk olmamalidir lt CR gt lt LF gt icin bu kati gereksinim yalnizca lt CR gt veya lt LF gt gibi diger sistem satir kesmelerinin tutarli kullanimi icin ileti govdeleri icinde biraz gevsetilir Durum kodlariIstemci bir web sayfasi goruntulemek icin bir tarayici ile bu siteyi olusturmak icin sunucudan web site dosyalarini istemektedir Sunucu bu istek sonucunda bir HTTP durum kodu kullanarak yanit olusturmaktadir Bu kodlari HTTP durum kodu veya yanit kodu olarak adlandirmaktayiz Her bir durum kodu farkli anlamlara gelmektedir ve bu kodlar sayfanin duzgun calisip calismadigi hakkinda bilgi vermektedir 60 tan fazla HTTP durum kodu bulunmakta Bu durum kodlarinin bazilari kullanilmamakta bazilari ile de sikca karsilasmamaktayiz bu kodlarin bazilari ise gelecekte kullanilmak icin hazirlanmis kodlardir SEO calismalarinda veya site tarama analizlerinde karsilasilan en yangin durum kodlari 5 baslik altinda incelenmektedir 1xx Bilgilendirme 2xx Basarili 3xx Yonlendirme 4xx Istemci Hatasi 5xx Sunucu Hatasi1xx Durum kodlari 1xx HTTP durum kodlari bilgilendirme kodlari olarak tanimlanmakta Istemcinin istegi sunucu ulasildigi ve islemin basladigina dair bilgilendirme kodlarini ifade eden durum kodlaridir Sunucu tarafindan cevap olustuktan sonra kaldirilirlar Bu kodlarinin bazilari ile daha sik karsilasilmaktadir 100 Istemci tarafindan gonderilen istegin basligi sunucu tarafindan alindigi ve govdesinin de alinmaya hazir oldugunu ifade etmektedir 101 Istemcinin Sunucudan protokol degistirmesini talep ettigi ve sunucun talebi kabul ettigini ifade etmektedir 2xx Durum Kodlari Istemcinin isteklerine sunucunun basarili verdigini ifade eden durum kodlaridir SEO denetimleri icin bu sayfalarin sorunsuz calistigini ifade etmektedir Genellikle sayfalarin 2xx kodlari dondurmesini bekleriz 2xx icerisinde farkli anlamlara gelen sikca karsilasilan 2xx durum kodlari bulunmakta 200 OK yanit kodu olarak tanimlanmakta ideal durum kodudur Sayfalarin sorunsuz bir sekilde calistigini ifade eder 201 Olusturuldu durum olarak tanimlanmakta Sunucu yapilan istegi kabul eder ve isleme sureci baslar bunun sonucunda istek yerine getirilebilir ya da getirilemez 204 Icerik yok yanit kodu olarak ifade edilmekte Sunucu istegi basarili bir sekilde isleme koydu ve istemciye geri gonderilecek veri bulunmadigi ifade etmektedir 205 Icerigi sifirla yanit olarak tanimlanmakta Sunucu isleme basarili bir sekilde isleme koydu fakat istek gonderenden belge gorunumu sifirlanmasini istemekte ve herhangi bir icerik dondurmemektedir 206 Kismi icerik yanit kodu olarak ifade edilmekte Sunucu istemci tarafindan gonderilen bir aralik bagliligi nedeniyle kaynagin yalnizca bir kismini gondermekte Aralik basligi HTTP istemcileri tarafindan kesintiye ugramis ve indirmelerin devam ettirilmesini saglamak veya bir indirmeyi birden cok es zamanli akisa bolmek icin kullanilir 207 Coklu durum yanit kodu olarak ifade edilmekte Takip eden mesaj govdesi bir XML masajidir ve kac tane alt istekle bulunduguna bagli olarak bir dizi ayri yanit kodu olusturabilmekte Bu durum kodu birden cok durum kodunun dogru olabildigi durumlarda kullanilmakta 3xx Durum Kodlari Gecici veya kalici yonlendirme kodlaridir Bu kodlar sayfalarin SOE degerini korumak icin onemlidir 3xx durum kodlari kendi icerisinde farkli anlamlara gelen farkli durum kodlarindan olusmaktadir 301 Kalici yonlendirme durum kodu olarak ifade edilmekte Bir web sayfasinin kalici olarak bir baska web sayfasina yonlendirildigi ve sayfayi ziyaret eden kullanicinin da otomatik olarak yonlenmesini saglayan durum kodudur 302 Gecici yonlendirme durum kodu olarak ifade edilmekte Bir web sayfasinin gecici olarak bir baska web sayfasina yonlendirildigini ifade eden durum kodudur 301 yonlendirme kodundan farki ilgili sayfanin test asamasinda olmasi bakima alinmasi ya da bir e ticaret sitesi icin ilgili urunun stoklarinin gecici olarak tukenmesi gibi ilgili sayfanin tekrar aktif edilecegi durumlarda kullanilmasidir Fakat kullanicilar 301 yonlendirmesi ile 302 yonlendirmesi arasindaki farki anlamayacaktir Ilgili sayfaya giris yapan kullanicilar direkt olarak diger sayfaya yonlendirilmektedir 307 Gecici Yeniden Yonlendirme kodu olarak ifade edilmektedir 302 gibi bir bir kaynaga gecici olarak yonlendirmeyi ifade eder 308 Bir kaynagin kalici olarak farkli bir kaynaga tasindigini ifade eden durum kodudur 301 durum kodundan farkli olarak HTTP yonetiminin degismesine izin vermez 4xx Durum kodlari Istemci hata kodlari olarak ifade edilmektedir SEO denetimleri yapilirken en cok dikkat edilen durum kodlaridir Bu durum kodlarindan bazilari ile daha sik karsilasilir 400 hatali istek durum kodu olarak ifade edilir Sunucunun istemciden kaynaklanan hatadan dolayi istegi yerine getirememesidir 403 Yasaklanmis icerik Sunucu Yapilan istegi anlar fakat reddettigi durumlarda bu durum kodunu dondurmekte 404 Sayfa bulunamadi olarak ifade edilir En cok karsilasilan HTTP durum kodudur Istenilen kaynagin bulunamadigi fakat gelecekte bulanabilecegi anlamina gelir bu yuzden bu hatayi duzeltmek icin genellikle 3xx yonlendirme kodlari kullanilmakta ya da ozel 404 sayfalari olusturulmakta 5xx Durum Kodlari Sunucu hatalari ifade eden durum kodlaridir Sunucular istekleri isleyemediklerinde bu durum kodlarini dondurmekte Kullanicilar tarafinda sayfa goruntulenemez 500 Sunucu hatasi olarak ifade edilir Beklenmeyen bir durumla karsilasildiginda Sunucular bu kodlari dondurmekte 502 Sunucunun baska bir sunucuya istek gonderdikten sonra gecersiz yanit aldigi anlamina gelen durum kodudur 504 Bir istegi islerken bir sunucunun diger sunucudan yanit beklerken istegin zaman asimina ugramasi durumunda gorulen durum kodudur 505 HTTP protokol surumunun desteklenemedigi anlaminda gelen durum kodudur 511 Kullanilmak istenen agin istegi sunucuya iletmeden once kimlik dogrulamasi yapmasi gerektigi durumlarda gorulen durum kodudur Sifrelenmis baglantiFirefox 3 rc1 Genisletilmis Dogrulama SSL adres cubugu ve sertifika detayi Sifreli bir HTTP baglantisi kurmanin en populer yolu HTTPS dir Sifreli bir HTTP baglantisi kurmak icin iki baska yontem de mevcuttur Guvenli Kopru Metni Aktarim Protokolu ve TLS ye yukseltme belirtmek icin HTTP 1 1 Yukseltme basligini kullanma Ancak bu ikisi icin tarayici destegi neredeyse yoktur Ornek oturumAsagida bir HTTP istemcisi ile www example com baglanti noktasi 80 uzerinde calisan bir HTTP sunucusu arasindaki ornek bir konusma bulunmaktadir Istemci istegi GET HTTP 1 1 Host www example com Bir istemci istegini bu durumda istek satiri ve yalnizca bir baslik alanindan olusur bos bir satir izler boylece istek her biri satir basi seklinde olan cift satir sonu ile biter Ana Bilgisayar alani tek bir IP adresini paylasan cesitli DNS adlari arasinda ayrim yaparak isme dayali sanal barindirmaya izin verir HTTP 1 0 da istege bagli olsa da HTTP 1 1 de zorunludur Varsa index html anlamina gelir Sunucu yaniti HTTP 1 1 200 OK Date Mon 23 May 2005 22 38 34 GMT Content Type text html charset UTF 8 Content Length 155 Last Modified Wed 08 Jan 2003 23 11 55 GMT Server Apache 1 3 3 7 Unix Red Hat Linux ETag 3f80f 1b6 3e1cb03b Accept Ranges bytes Connection close lt html gt lt head gt lt title gt An Example Page lt title gt lt head gt lt body gt lt p gt Hello World this is a very simple HTML document lt p gt lt body gt lt html gt ETag varlik etiketi baslik alani istenen kaynagin onbellege alinmis bir surumunun sunucudaki kaynagin gecerli surumuyle ayni olup olmadigini belirlemek icin kullanilir Content Type HTTP mesaji tarafindan tasinan verinin Internet ortam tipini belirtirken Content Length uzunlugunu bayt cinsinden belirtir HTTP 1 1 web sunucusu Accept Ranges bayt alanini ayarlayarak belgenin belirli bayt araliklarina yonelik isteklere yanit verme yetenegini yayinlar Bu istemcinin bayt hizmeti olarak adlandirilan sunucu tarafindan gonderilen bir kaynagin yalnizca belirli kisimlarina sahip olmasi gerekiyorsa yararlidir Connection close gonderildiginde web sunucusunun bu yanitin aktarilmasindan hemen sonra TCP baglantisini kapatacagi anlamina gelir Baslik satirlarinin cogu istege baglidir Icerik Uzunlugu eksik oldugunda uzunluk baska yollarla belirlenir Parcali aktarim kodlamasi icerigin sonunu isaretlemek icin yigin boyutu 0 kullanir Icerik Uzunlugu olmadan kimlik kodlamasi soket kapanana kadar icerigi okur Gzip gibi bir sikistirma programi iletilen verileri sikistirmak icin kullanilabilir Benzer protokollerGopher protokolu 1990 larin baslarinda HTTP tarafindan degistirilen bir icerik teslim protokoludur SPDY protokolu Google da gelistirilen ve HTTP 2 nin yerini alan HTTP ye bir alternatiftir Gemini protokolu gizlilikle ilgili ozellikleri zorunlu kilan Gopher dan ilham alan bir protokoldur Ayrica bakinizWikimedia Commons ta HTTP ile ilgili ortam dosyalari bulunmaktadir HTTPSKaynakcaWorld Wide Web Consortium ana sayfasi2 Aralik 2002 tarihinde Wayback Machine sitesinde RFC2616 HTTP 1 1 iletisim kuralinin tanimlandigi RFC 21 Subat 2004 tarihinde Wayback Machine sitesinde FTP erisimi a b c d e f g Fielding R Gettys J Mogul J Frystyk H Masinter L Leach P Berners Lee T Haziran 1996 Hypertext Transfer Protocol HTTP 1 1 Ingilizce RFC2616 doi 10 17487 rfc2616 9 Agustos 2020 tarihinde kaynagindan Can I use Support tables for HTML5 CSS3 etc caniuse com 19 Subat 2018 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 Friedl Stephan Langley Adam Popov Andrey Transport Layer Security TLS Application Layer Protocol Negotiation Extension tools ietf org Ingilizce 10 Ekim 2014 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 Belshe M Peon R Thomson M 30 Mayis 2015 http2 github io Ingilizce 15 Temmuz 2013 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 Bishop lt mbishop evequefou be gt Mike Hypertext Transfer Protocol Version 3 HTTP 3 tools ietf org Ingilizce 17 Temmuz 2019 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 Cimpanu Catalin HTTP over QUIC to be renamed HTTP 3 ZDNet Ingilizce 13 Kasim 2018 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 Cimpanu Catalin Cloudflare Google Chrome and Firefox add HTTP 3 support ZDNet Ingilizce 26 Eylul 2019 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 HTTP 3 the past the present and the future The Cloudflare Blog Ingilizce 26 Eylul 2019 26 Eylul 2019 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 Cloudflare Community Ingilizce 6 Kasim 2019 6 Haziran 2020 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 bidb itu edu tr 1 Kasim 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 4 Nisan 2023 Evolution of HTTP HTTP MDN developer mozilla org Ingilizce 27 Mart 2023 tarihinde kaynagindan Erisim tarihi 27 Mart 2023 www w3 org 7 Haziran 1997 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 www w3 org 5 Haziran 1997 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 www w3 org 3 Temmuz 1998 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 www w3 org 6 Ocak 2008 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 www w3 org 8 Ocak 2008 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 webarchive loc gov 26 Nisan 2020 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 IETF HTTP Working Group Ingilizce 19 Subat 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 a b c d Fielding R Gettys J Mogul J Frystyk H Masinter L Leach P Berners Lee T Haziran 1999 Hypertext Transfer Protocol HTTP 1 1 Ingilizce RFC2616 doi 10 17487 rfc2616 9 Agustos 2020 tarihinde kaynagindan a b Fielding R Reschke J Ed Haziran 2014 Hypertext Transfer Protocol HTTP 1 1 Authentication Ingilizce RFC7235 doi 10 17487 rfc7235 7 Agustos 2020 tarihinde kaynagindan www apacheweek com 14 Mart 2006 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 Berners Lee T Fielding R Frystyk H Mayis 1996 Hypertext Transfer Protocol HTTP 1 0 Ingilizce RFC1945 doi 10 17487 rfc1945 8 Agustos 2020 tarihinde kaynagindan a b Fielding Roy Reschke Julian Hypertext Transfer Protocol HTTP 1 1 Message Syntax and Routing tools ietf org Ingilizce 14 Temmuz 2014 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 Fielding Roy Reschke Julian Hypertext Transfer Protocol HTTP 1 1 Semantics and Content tools ietf org Ingilizce 14 Temmuz 2014 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 www w3 org 17 Mayis 2003 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 Khare R Lawrence S Mayis 2000 Upgrading to TLS Within HTTP 1 1 Ingilizce RFC2817 doi 10 17487 rfc2817 8 Agustos 2020 tarihinde kaynagindan www kb cert org 15 Haziran 2002 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 Dusseault L Snell J Mart 2010 PATCH Method for HTTP Ingilizce RFC5789 doi 10 17487 rfc5789 8 Agustos 2020 tarihinde kaynagindan a b Ediger Brad 2008 Advanced Rails Farnham O Reilly ISBN 978 0 596 51972 8 OCLC 213482728 Cantrell Christian 1 Haziran 2005 Adobe 19 Agustos 2017 tarihinde kaynagindan arsivlendi Erisim tarihi 8 Agustos 2020 owasp org Ingilizce 28 Nisan 2020 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 HTTP durum kodlari 2 Eki 2020 27 Mart 2023 tarihinde kaynagindan Erisim tarihi 27 Mart 2023 Savas 22 Ocak 2022 IdeaSoft E ticaret Paketleri ve E ticaret Sitesi Yazilimlari IdeaSoft 27 Mart 2023 tarihinde kaynagindan Erisim tarihi 27 Mart 2023 HTTP Durum Kodlari Rehberi zeo org 27 Mart 2023 tarihinde kaynagindan Erisim tarihi 27 Mart 2023 Canavan John E 2001 Fundamentals of network security Boston Artech House ISBN 1 58053 176 8 OCLC 45172884 Google Code Archive Long term storage for Google Code Project Hosting code google com 1 Mart 2016 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 bugs chromium org 8 Temmuz 2017 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 bugzilla mozilla org Ingilizce 14 Mart 2013 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Agustos 2020 Franks John Luotonen Ari Byte Range Retrieval Extension to HTTP tools ietf org Ingilizce 30 Kasim 2010 tarihinde kaynagindan Erisim tarihi 7 Agustos 2020 HTTP benzer protokoller 19 Mart 2023 tarihinde kaynagindan arsivlendi Erisim tarihi 18 Mart 2023