Web ve protokol temelleri
URL, origin ve site
Benzer görünen adreslerin güvenlik sınırları farklıdır.
Kavramı anlayalım
URL şema, host, port, path ve isteğe bağlı query içerir. Fragment (#sonrası) HTTP isteğine gönderilmez; tarayıcı içi gezinme için kullanılır. Query’de secret veya kişisel veri taşımak, URL logları ve geçmiş üzerinden sızıntı yaratabilir.
Origin şema + host + etkin port birleşimidir. https://app.example.test ile https://api.example.test aynı origin değildir. Same-site başka bir kavramdır; cookie kuralları kayıt edilebilir alan adı ve şema gibi unsurları kullanır. Aynı site olmak aynı origin olmak anlamına gelmez.
Varsayılan HTTPS portu 443, HTTP portu 80’dir; bunlar bir güvenlik garantisi değildir. URL encoding ile veri taşırken her alanı doğru kodla; bütün URL’yi rastgele encode etmek path ve query ayraçlarının anlamını bozabilir.
CORS ve cookie hatalarını birbirinden ayırmak için.
Subdomain farklılığının origin’i değiştirmediğini sanmak.
Aynı konu. Üç farklı derinlik.
https://app.example.test:443/blog?q=http#headersFragment gönderilmez; query gönderilir.
Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.
Önce kendin dene.
localhost:3000 ve localhost:5048 aynı origin midir?
Çözümü ve açıklamasını göster
http://localhost:3000 ≠ http://localhost:5048Port farklı olduğu için hayır.