HTTP İstek Metotları ve Cevap Durum Kodları “HTTP Gevezedir”

Kayhan KIRBAŞ
4 min readNov 17, 2021

--

Biz, web sunucularına tarayıcılarımız ve HTTP aracılığıyla istekte (request) bulunurken GET, POST, PUT gibi metotlarla bunu yaparız. Bu metotlara cevap (response) olarak da, sunucu bize durum kodları gönderir.

Durum kodları, isteğimizin nasıl sonuçlandığı hakkında bize bilgi veren sayısal ifadelerdir.

Dinlemesini (okumasını) bildiğimiz sürece bize çok şey anlatır. Çünkü arkaplanda bol bol konuşur.

Sistem Mühendisi veya Hacker’sanız, onun dilinden anlamalısınız.

İstek Metotları

GET: Sunucudaki kaynaklara erişim (okuma) metotudur. Sunucudan veri çekmek isteriz.

POST: Sunucudaki kaynakları değiştirmek istediğimizi belirtir ve veri yazabilir.

PUT: Sunucudaki kaynakları güncellemek istediğimizi belirtir.

PATCH: Belirli kaynağın küçük bir kısmını güncelleyebilir. (PUT’tan hızlıdır.)

DELETE: Sunucudaki kaynakları silmek istediğimizi belirtir.

CONNECT: Kaynağa erişmek için, proxy gibi birden fazla hedef kullanabilir.

HEAD: Sunucu hakkında bilgi alabilir.

OPTIONS: Sunucuda kullanılabilecek metotlar hakkında bilgi alabilir.

TRACE: Sunucu ile istemci arasında başka hedef olup olmadığını kontrol edebilir. (Teşhis amaçlıdır.)

SEARCH: Belirli bir kaynağın altındaki kaynakları da sorgulayabilir.

Durum Kodları

HTTP Durum Kodları Kategorisi
HTTP Durum Kodları Kategorisi

100 (Continue): Bu yanıt, bizim isteğe devam etmemiz veya istek zaten tamamlanmışsa yanıtı yok saymamız gerektiğini belirtir.

101 (Switching Protocols): Sunucu, başka bir protokole geçiş yaptığını belirtir.

102 (Processing): Sunucunun isteği aldığını ve işlediğini belirtir.

103 (Early Hints): Sunucu bir yanıt hazırlarken, bizim isteklere devam edebileceğimizi belirtir.

200 (OK): İsteğin başarılı bir şekilde tamamlandığını belirtir.

201 (Created): İsteğin başarılı olduğunu ve isteğe bağlı olarak yeni bir kaynak oluşturulduğunu belirtir.

202 (Accepted): İsteğin kabul edildiğini fakat henüz bir işlem yapılmadığını belirtir. Genelde tekrarlanan istekler için bu cevabı döndürür.

203 (Non-Authoritative Information): Yapılan istek için sunucuda kaynağın tam olarak bulunmadığı ve harici taraflardan toplanarak oluşturulduğunu belirtir.

204 (No Content): Gönderilen isteğe verilecek bir içeriğin olmadığını belirtir.

205 (Reset Content): Gönderilen isteğin sıfırlanmasını ve tekrarlanmasını belirtir.

206 (Partial Content): Kaynağın sadece belirli bir kısmı istendiğinde, olumlu cevap olarak gönderilir.

207 (Multi-Status): Yapılan isteğe birden çok kaynak hakkında bilgi verilebileceği durumlarda döndürülür.

300 (Multiple Choice): Yapılan isteğin birden fazla yanıtı olduğunda ve birinin seçilmesi gerektiğinde döndürülür.

301 (Moved Permanently): İstenen kaynağın URL’nin, bizim için kalıcı olarak değiştirildiğini, işleme oradan devam edileceğini belirtir.

302 (Found): İstenen kaynağın URL’nin, bizim için geçici olarak değiştirildiğini, işleme oradan devam edileceğini belirtir.

303 (See Other): İstenen kaynağın başka bir hedefte olduğunu belirtir.

304 (Not Modified): Verilen yanıtın değişmediğini, önbellekten (cache’ten) okumaya devam edebileceğimizi belirtir.

305 (Use Proxy): İstenen kaynağa proxy ile erişilmesi gerektiğini belirtir.

307 (Temporary Redirect): İstenen kaynak için geçici olarak başka hedefe yönlendirileceğimi belirtir.

308 (Permanent Redirect): İstenen kaynak için kalıcı olarak başka bir hedefe yönlendirileceğimizi belirtir.

400 (Bad Request): Sunucunun söz dizimi (syntax) hatasından dolayı isteği anlayamadığını belirtir.

401 (Unauthorized): İlgili isteği yapabilmemiz için yetkilendirilmemiş olduğumuzu belirtir.

403 (Forbidden): Ulaşmak istediğimiz kaynak için erişim iznimiz olmadığını belirtir.

404 (Not Found): Ulaşmak istediğimiz kaynağın olmadığını belirtir.

405 (Method Not Allowed): İsteğin anlaşıldığı ama metotun kabul edilmediğini belirtir. Örn; DELETE metotu kabul edilmezse.

406 (Not Acceptable): Metotun işlem yaptırmak istediği kaynağın bulunmadığını veya kriterlere uygun olmadığını belirtir.

407 (Proxy Authentication Required): İstek için önce proxy sunucuda doğrulama yapılması gerektiğini belirtir.

408 (Request Timeout): İsteğin işlenmesi sırasında zaman aşımına uğrandığını belirtir.

409 (Conflict): Sunucuda birden fazla aynı isteğin veya işlemin çakıştığını belirtir.

410 (Gone): Erişilmek istenen kaynağın sunucudan kalıcı olarak silindiği durumlarda gönderilir. Cache’teki cookie’lerin temizlenmesi emrini de verir.

411 (Length Required): Metotun Content-Lenght header’ı olmadan istek yaptığını ve sunucunun bu header’ı gerektirdiği için isteğin reddedildiğini belirtir.

412 (Precondition Failed): İstek yaparken sunucunun istediği ön koşulları sağlamadığımızı belirtir.

413 (Payload Too Large): İsteğin, sunucunun işleyebileceğinden büyük olduğunu belirtir.

414 (URL Too Long): İstekte gönderilen URL’in çok uzun olduğunu belirtir.

415 (Unsupported Media Type): İstekte gönderilen medya tipinin sunucu tarafından desteklenmediğini belirtir.

416 (Range Not Satisfiable): İstekte belirtilen header’ın içindeki URL aralığının (Range bilgisinin), sunucu tarafından kabul edilemez aralıklarda olduğunu belirtir.

417 (Expectation Failed): İstekte belirtilen beklentilerin (Expect’in) sunucu tarafından karşılanamayacağını belirtir.

418 (I’m a teopot): Sunucunun, çaydanlıkla kahve yapamayacağını belirtir :)

422 (Unprocessable Entity): İsteğin düzgün olduğunu ama anlam hataları içerdiğini belirtir.

423 (Locked): Erişilmek istenen kaynağı geçici veya kalıcı olarak kilitlendiğini belirtir.

424 (Failed Dependency): Önceki bir istekte başarısız olunduğu için ilgili yeni isteğin de başarısız olduğunu belirtir.

425 (Too Early): Sunucunun artık yeni bir isteği işlemek istemediğini, bizi geçersiz kıldığını belirtir.

426 (Upgrade Required): Sunucunun, isteğin yapıldığı protokolü beğenmediğini ama farklı bir protokolle tekrar yapılırsa değerlendirebileceğini belirtir.

428 (Precondition Required): İstenen işlem için ön koşul gerektiğini belirtir. Birisinin kaynağa GET ile erişip okuma yaparken, diğerinin PUT ile değişiklik yapmasını önlemek gibi çakışma senaryoları için işlemin ancak ön koşullu gerçekleştirilebileceğini belirtir.

429 (Too Many Requests): Yapılmak istenen işlem için çok fazla istek gönderildiğini belirtir. 202 (Accepted)’ın olumsuz halidir, bir hata olarak değerlendirilir.

431 (Request Header Fields Too Large): Sunucunun, istekte gönderilen header’da çok fazla bilgi olduğunu ve güvenmediği için işlemek istemediğini belirtir. 413 (Payload Too Large)’ten farklı olarak, işleme almadan reddediğini belirtir.

451 (Unavailable For Legal Reasons): Sansürlenmiş veya yasal olmayan bir kaynağa erişimin reddedildiğini belirtir.

500 (Internal Server Error): Sunucunun anlamlandıramadığı bir hata ile karşılaştığını belirtir. Loglarına bakmak gerekir.

501 (Not Implemented): İsteğin sunucu tarafından işlenemediğini veya desteklenmediğini belirtir.

502 (Bad Gateway): Sunucunun, isteği işlerken bağlı olduğu başka bir sunucu (proxy veya gateway) tarafından cevapsız bırakıldığını veya reddedildiğini belirtir.

503 (Service Unavailable): Sunucunun, isteği işlemeye hazır olmadığını belirtir. Genellikle bakım modlarında açılır.

504 (Gateway Timeout): Sunucunun, isteği işlerken bağlı olduğu başka bir sunucudan (proxy veya gateway) yeterli süre içinde cevap alamadığını belirtir.

505 (HTTP Version Not Supported): İsteğin iletilmek için kullanıldığı HTTP versiyonunun sunucu tarafından desteklenmediğini belirtir.

507 (Insufficient Storage): İsteğin işlenmesi için depolamada sorun meydana geldiğini belirtir. Depolamadaki yetersiz alan veya erişim sorununu belirtir.

508 (Loop Detected): Sunucunun, isteği işlerken sonsuz bir döngüye girdiğini belirtir.

511 (Network Authentication Required): Sunucunun ilgili isteği yerine getirebilmesi için ağda doğrulama yapması gerektiğini belirtir.

Kayhan KIRBAŞ

--

--