HTTP başlıkları, istemcide ki bir uygulamanın sunucu ile haberleşmesi sırasında ek bilgiler sağlar. İstemci ve sunucu arasında bu başlıklar sayesinde, isteklerin nasıl işleneceği belirlenir ve bu iletişim OSI’nin 3. katmanından 7. katmanına kadar gerçekleşir.
Content-Type
OSI’nin 7. katmanında, veri formatının tanımlanmasının gerçekleştiği bu başlıkta gönderilen içeriğin türü belirlenir.
İçerik Türleri;
Veri Tipi | Değeri |
Uygulama | application/EDI-X12 application/EDIFACT application/javascript application/octet-stream application/ogg application/pdf application/xhtml+xml application/x-shockwave-flash application/json application/ld+json application/xml application/zip application/x-www-form-urlencoded |
Ses | audio/mpeg audio/x-ms-wma audio/vnd.rn-realaudio audio/x-wav |
Resim | image/gif image/jpeg image/png image/tiff image/vnd.microsoft.icon image/x-icon image/vnd.djvu image/svg+xml |
Multipart | multipart/mixed multipart/alternative multipart/related (using by MHTML (HTML mail).) multipart/form-data |
Text | text/css text/csv text/html text/javascript (obsolete) text/plain text/xml |
Video | video/mpeg video/mp4 video/quicktime video/x-ms-wmv video/x-msvideo video/x-flv video/webm |
VND | application/vnd.oasis.opendocument.text application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.presentation application/vnd.oasis.opendocument.graphics application/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/vnd.ms-powerpoint application/vnd.openxmlformats-officedocument.presentationml.presentation application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document application/vnd.mozilla.xul+xml |
Örnek bir bash çıktısı:
curl -X POST https://example.com/api \ -H "Content-Type: application/json" \ -d '{"key": "value"}'
Authorization
Bu başlıkta arada ki güvenli oturumun gerçekleşmesi için kimlik doğrulaması gerçekleşir. Uygulama içerisinde gerçekleştiği için OSI’nin 7. katmanında bulunur. Bazı authorization başlıkları aşağıda ki gibidir;
- Basic Auth
- Bearer Token
- API Key
- Digest Auth
- OAuth 2.0
- Hawk Authentication
- AWS Signature
curl -X GET https://example.com/secure-data \ -H "Authorization: Bearer your_token_here"
Accept
Bu katmanda istemcinin kabul ettiği veri türlerinin belirlendiği kısımdır. Yine uygulama katmanında gerçekleştiği için OSI’nin 7. katmanında gerçekleşiyor.
curl -X GET https://example.com/api \ -H "Accept: application/json"
User-Agent
İsteği gönderen istemcinin tanımlandığı kısımdı. Uygulama kısmında olduğu için OSI’nin 7. katmanında gerçekleşir.
User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions>
Cache-Control
Önbellekleme olayının kontrol edildiği kısımdır. OSI’nin 7. katmanında gerçekleşir.
Cache-Control: max-age=604800
Daha fazla bilgi için: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
Host
Hedef sunucunun alan adını ve portunun belirlendiği kısımdır. OSI 7. katmanda bulunur.
"Host: example.com"
Origin
Verinin, geldiği kaynağı belirtir. OSI’nin 7. katmanında gerçekleşir.
"Origin: https://example.com"
Referer
İsteğin yapıldığı sayfa bilgisinin olduğu kısımdır. OSI’nin 7. katmanında bulunur.
"Referer: https://mywebsite.com/page"
Accept-Encoding
İstemcinin desteklediği veri sıkıştırma türünün belirlendiği kısımdır. OSI’nin 6. katmanında bulunur.
Accept-Encoding: gzip Accept-Encoding: compress Accept-Encoding: deflate Accept-Encoding: br Accept-Encoding: zstd Accept-Encoding: identity Accept-Encoding: * // Multiple algorithms, weighted with the quality value syntax: Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
Cookie
İstemciden sunucuya çerezlerin taşındığı kısımdır. OSI’nin 7. katmanında gerçekleşir.
"Cookie: session_id=abc123"
Set-Cookie
Sunucudan, istemcide kullanılacak çerezlerin ayarlanması için kullanılır. OSI’nin 7. katmanında gerçekleşir.
curl -X GET https://example.com/resource \ -H "Set-Cookie: session_id=abc123; Path=/; Secure; HttpOnly"
X-Requested-With
Web uygulaması ile istemci arasında, istekler normal ve yenileme olarak iki kısımdan oluşur. İstemci tarafından uygulama tarafına normal bir GET isteği giderse, uygulama sunucusu bu isteğin normal bir istek olduğunu algılarken, AJAX isteği giderse sayfanın tamamının veya bir kısmının yenileme isteği olduğunu anlar. Ayrıca sunucu tarafında, X-Requested-With başlığı kontrol edilerek bu isteğin bir bot tarafından mı yoksa normal bir kullanıcıdan geldiği de anlaşılır. Bu istek doğal olarak OSI’nin 7. katmanında gerçekleşir.
curl -X GET https://example.com/api \ -H "X-Requested-With: XMLHttpRequest"
Connection
İstemci ve sunucu arasında gerçekleştirilen bağlantının açık mı kapalı mı kalacağının belirlendiği kısımdır. Burada iki seçenek vardır. Bunlar “keep-alive” ve “close” şeklindedir. OSI’nin 4. katmanında TCP ile gerçekleşen bir durumdur.
curl -X GET https://example.com/resource \ -H "Connection: keep-alive"
X-Forwarded-For
Bu başlık, istemci ile sunucu arasında bir proxy veya lord balancer gibi katmanlar varsa, sunucu tarafında istemcinin IP adresinin bilinmesi için doldurulan kısımdır. Bazı kaynaklarda XFF olarakta geçer ve OSI’nin 3. katmanında gerçekleşir.
X-Forwarded-For: <client>, <proxy> X-Forwarded-For: <client>, <proxy>, …, <proxyN>