Opak Yanıtların Başlıklarına / Gövdesine Erişim
Opak tepkiler etrafında en basit sınırlama çoğundan anlamlı bilgiler geri alınamıyor olmasıdır özellikleri arasında Response
sınıfına gibi headers
, ya da çeşitli çağrı yöntemleri makyaj Body
gibi arayüz json()
veya text()
. Bu, opak bir yanıtın kara kutu doğasıyla uyumludur.
Opak Yanıtları Bir Sayfada Kaynak Olarak Kullanma
Opak yanıtlar, tarayıcı CORS olmayan bir çapraz kaynak kaynağının kullanılmasına izin verdiğinde bir web sayfasında kaynak olarak kullanılabilir. Mozilla Developer Network belgelerinden uyarlanmış, CORS olmayan çapraz kaynak kaynakların ve dolayısıyla opak yanıtların geçerli olduğu bir öğe alt kümesi aşağıda verilmiştir :
<script>
<link rel="stylesheet">
<img>
, <video>
Ve<audio>
<object>
ve <embed>
<iframe>
Opak yanıtların geçerli olmadığı dikkate değer bir kullanım durumu font kaynakları içindir .
Genel olarak, bir sayfada belirli bir kaynak türü olarak opak bir yanıtı kullanıp kullanamayacağınızı belirlemek için ilgili spesifikasyonu kontrol edin. Örneğin, HTML spesifikasyonu, CORS dışı çapraz kaynak (yani opak) yanıtların, <script>
hata bilgilerinin sızmasını önlemek için bazı sınırlamalarla birlikte öğeler için kullanılabileceğini açıklar .
Opak Yanıtlar ve Önbellek Depolama API'si
Bir "yakaladım" diye geliştirici içine çalışabilir opak yanıtlarıyla birlikte bunları kullanarak içerir Önbellek Depolama API . İki parça arka plan bilgisi önemlidir:
status
Opak yanıtın özelliği olan her zaman ayarlı0
olursa olsun orijinal isteği başarılı veya başarısız olsun.
- İsteklerden herhangi birinden kaynaklanan yanıtlar 2XX aralığında olmayan bir durum koduna sahipse, Önbellek Depolama API'sinin
add()
/ addAll()
yöntemlerinin her ikisi de reddedilir .
Bu iki noktadan, add()
/ addAll()
call'ın bir parçası olarak gerçekleştirilen istek opak bir yanıtla sonuçlanırsa, önbelleğe eklenemeyeceği anlaşılır.
Açıkça a yaparak fetch()
ve ardından put()
opak yanıtla yöntemi çağırarak bu sorunu çözebilirsiniz . Bunu yaparak, önbelleğe aldığınız yanıtın sunucunuz tarafından döndürülen bir hata olma riskini etkin bir şekilde kabul etmiş olursunuz.
const request = new Request('https://third-party-no-cors.com/', {mode: 'no-cors'});
fetch(request).then(response => cache.put(request, response));
Opak Yanıtlar ve navigator.storage API
Alanlar arası bilgilerin sızmasını önlemek için, depolama kotası sınırlarını hesaplamak için kullanılan (yani bir QuotaExceeded
istisna atılıp atılmadığı) ve navigator.storage
API tarafından bildirilen opak bir yanıtın boyutuna önemli bir dolgu eklenir .
Bu dolgunun ayrıntıları tarayıcıdan tarayıcıya değişir, ancak Google Chrome için bu, önbelleğe alınmış tek bir opak yanıtın genel depolama kullanımına katkıda bulunduğu minimum boyutun yaklaşık 7 megabayt olduğu anlamına gelir . Opak kaynakların gerçek boyutuna bağlı olarak depolama kotası sınırlamalarını normalde beklediğinizden çok daha erken kolayca aşabileceğinizden, kaç tane opak yanıtı önbelleğe almak istediğinizi belirlerken bunu aklınızda bulundurmalısınız.