Menu
CoddyTech

Origin Nedir

Coddy'nin Node.js Journey'sinin REST API'leri bölümünün bir parçası. Ders 18 / 25.

Bir tarayıcı normalde bir sayfanın JavaScript’inin kendi kaynağından gelen API yanıtlarını okumasına izin verir. Aynı kaynak kuralı, bir sayfanın başka bir sitenin verilerini serbestçe okumasını engeller. CORS (Cross-Origin Resource Sharing), bir sunucunun yanıt başlıklarıyla başka bir kaynağa izin vermesini sağlar.

Bir tarayıcı sayfasının bir kaynağı vardır: şeması, ana bilgisayarı ve bağlantı noktası birlikte bu kaynağı oluşturur. Aynı kaynaktaki farklı yollar, CORS izni olmadan bir API’yi paylaşabilir. Ana bilgisayarın, şemanın veya bağlantı noktasının değişmesi farklı bir kaynak oluşturur.

new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// aynı origin

URL, bir adresi adlandırılmış parçalara ayıran yerleşik bir sınıftır. origin özelliği yolu ve sorguyu içermez. Sağlanan sayfa adresi başlangıç kodunda sabittir. Bu alıştırmada kaynaklar karşılaştırılır; sonraki adımda bir sunucu, kaynaklar arasında izin verecek.

Bir isteğin Origin başlığı bu kaynak değerini zaten içerir; sonraki derste bu başlık okunacak.

challenge icon

Görev

Kolay

Bu küçük bir alıştırma projesidir. Kurulumu hazır olarak verilmiştir; yalnızca exercise.js dosyasını düzenle.

Verilen adres sayfanın kökenini paylaşıyorsa {"same":true}, aksi hâlde false döndür. {"address":"https://board.example.com/api/tasks"} içeriğini /result adresine POST olarak gönderirsen true döner. https'i, ana bilgisayarı veya bağlantı noktasını değiştirmek false döndürür. Bu alıştırmadaki adresler geçerli mutlak URL'lerdir.

Başlangıçtaki GET /result, verilen örneği kullanır: {"address": "https://board.example.com/api/tasks"}. Diğer girdileri denemek için JSON gövdesiyle POST /result kullan.

Kendin dene

const page = 'https://board.example.com/tasks';
export function exercise({ address }) {
    return { same: address === page };
}

REST API'leri bölümündeki tüm dersler

Kendi başına pratik yap: Express playground