HTTP isteklerinde User-Agent veya Content-Type gibi başlıklar bulunur. Proje yöneticisi olarak ekli
tarayıcılarda Çerez veya Yönlendiren gibi ekstra
EXTRA_HEADERS
Amaç ekstra. Chrome, güvenlik nedeniyle ek üstbilgilerin bazılarını filtreler
Niyetin nasıl ve nerede başlatıldığına bağlı olarak.
Kaynaklar arası istekler, istemci ve sunucu açısından ek bir güvenlik katmanı gerektirir. birbirine ait değildir. Bu kılavuzda, bu tür isteklerin Chrome üzerinden kullanıma sunulması ele alınmaktadır. özel sekmeler (ör. tarayıcı sekmesinde bir URL açan uygulamalardan başlatılan amaçlar). Chrome'a kadar 83 ile başlayan geliştiriciler, Özel Sekme başlatırken istedikleri başlıkları ekleyebilirler. Sürüm 83'ten itibaren Chrome onaylanmamış başlıklardan dolayı, onaylanan çapraz kaynak başlıkları hariç tümünü filtrelemeye başladı oluşturduğunu fark etmiş olabilirsiniz. Chrome 86'dan itibaren, onaylanmamış üstbilgileri dijital öğe bağlantısı kullanılarak sunucu ve istemci birbiriyle ilişkili olduğunda kaynaklar arası istekler. Bu davranış aşağıdaki tabloda özetlenmiştir:
Chrome sürümü | CORS başlıklarına izin verilir |
---|---|
Chrome 83'ten önce | onaylı, onaylanmadı |
Chrome 83 - Chrome 85 | onay listesinde |
Chrome 86 ve sonraki sürümler | dijital varlık bağlantısı ayarlandığında, onaylananlar listesinde bulunan, onaylanmayan |
Tablo 1.: Onaylanmayan CORS başlıklarının filtrelenmesi.
Bu makalede, sunucu ile istemci arasında doğrulanmış bir bağlantının nasıl kurulacağı ve bu bağlantının hem onaylanan hem de onaylanmayan http üstbilgilerini gönderebilir. Şu bölüme atlayabilirsiniz: Kod için Özel Sekme Amaçlarına Ek Başlıklar Ekleme.
Arka plan
onaylanan ve onaylanmamış CORS İstek Başlıkları
Kaynaklar Arası Kaynak Paylaşımı (CORS), bir kaynaktaki web uygulamasının istekte bulunmasına olanak tanır. pek çok farklı kaynak vardır. CORS-approvelisted başlıklarının listesi HTML Standardı. Onay listesine eklenen başlıklar sonraki tabloda gösterilmiştir:
Header | Açıklama |
---|---|
accept-language | Müşterinin anladığı doğal dillerin reklamını yapma |
content-language | Mevcut hedef kitleye yönelik dili açıklıyor |
içerik türü | kaynağın medya türünü gösterir |
Tablo 2.: Onay listesindeki CORS başlıkları örneği.
Onaylanan başlıklar hassas içermediği için güvenli olarak kabul edilir ve sunucunun zarar verebilecek işlemler gerçekleştirmesine neden olma olasılığı çok düşüktür.
Onaylanmayan başlık örnekleri aşağıdaki tabloda gösterilmiştir:
Header | Açıklama |
---|---|
bearer-token | Sunucudaki istemcinin kimliğini doğrular |
kaynak | isteğin kaynağını gösterir |
kurabiye | sunucu tarafından ayarlanan çerezleri içerir |
Tablo 3.: Onaylanmamış liste dışı CORS başlıkları örneği.
CORS isteklerine onaylanmayan başlıkların eklenmesi, HTML standardı ve sunucuları tarafından önerilmez. kaynaklar arası isteklerin yalnızca onaylanan başlıkları içerdiğini varsayın. Onaylanmayan başlıklar gönderiliyor kötü amaçlı üçüncü taraf uygulamalarının, kullanıcıları kötüye kullanan başlıklar oluşturmasına izin verir Chrome'un (veya başka bir tarayıcının) sakladığı ve isteklere eklediği çerezler. Çerezler kötü amaçlı sunucu işlemlerinin kimliğini doğrulamak için iyi bir fırsattır.
CORS onaylı başlıkları Özel Sekme isteklerine ekleme
Özel Sekmeler, web sayfalarını özelleştirilmiş bir tarayıcı sekmesinde açmak için kullanabileceğiniz özel bir yöntemdir. Özel Sekme
intent'ler CustomTabsIntent.Builder()
kullanılarak oluşturulabilir. Bu panellere başlık,
Browser.EXTRA_HEADERS
işareti olan bir Bundle
kullanarak
CustomTabsIntent intent = new CustomTabsIntent.Builder(session).build();
Bundle headers = new Bundle();
headers.putString("bearer-token", "Some token");
headers.putString("redirect-url", "Some redirect url");
intent.intent.putExtra(Browser.EXTRA_HEADERS, headers);
intent.launchUrl(Activity.this, Uri.parse("http://www.google.com"));
Onaylanan başlıkları her zaman özel sekme CORS isteklerine ekleyebiliriz. Ancak Chrome filtreleri varsayılan olarak kabul edilmeyen başlıklar kullanır. Diğer tarayıcıların davranışı farklı olsa da, geliştiriciler, onaylanmamış başlıkların genel olarak engellenmesini beklemelidir.
Onaylanmayan başlıkları özel sekmelere eklemenin desteklenen yolu, ilk olarak kaynaklar arası bağlantı oluşturabilirsiniz. Bir sonraki bölümde, bu dönüşüm işlemlerinin ve gerekli başlıklarla bir Özel Sekmeler isteği başlatın.
Özel Sekme Amaçlarına Ek Başlık Ekleme
Dijital varlık bağlantıları oluşturma
Onaylanmayan başlıkların Özel Sekme amaçları üzerinden aktarılmasına izin vermek için Android ve web uygulaması arasında, yazarın marka sahibini doğrulayan bir dijital varlık bağlantısı iki uygulamanın da sahibidir.
Dijital öğe bağlantısı oluşturmak için resmi kılavuzdaki talimatları uygulayın. Bağlantı ilişkisi kullanımı için: "delegate_permission/common.use_as_origin"" kaynak kodunu görme.
Ek Başlıklarla Özel Sekme Niyeti Oluşturma
Özel Sekmeler amacı oluşturmanın birden fazla yolu vardır. Mevcut oluşturucuyu kullanabilirsiniz kitaplığı derleme bağımlılıklarına ekleyerek androidX'te yapabilirsiniz:
MULTI_LINE_CODE_PLACEHOLDER_1
Amacı oluşturun ve ekstra başlıklar ekleyin:
MULTI_LINE_CODE_PLACEHOLDER_2
Öğe Bağlantısını Doğrulamak için Özel Sekmeler Bağlantısı Oluşturun
Uygulama ileCustomTabsSession
Chrome sekmesi. Uygulamanın ve web uygulamasının aynı kaynağa ait olduğunu doğrulamak için oturumdan yararlanmamız gerekir.
Doğrulama yalnızca dijital varlık bağlantıları doğru şekilde oluşturulmuşsa başarılı olur.
CustomTabsClient.warmup()
numaralı telefonun aranması önerilir. Tarayıcı uygulamasının
arka planda önceden başlatma ve URL açma işlemini hızlandırma.
MULTI_LINE_CODE_PLACEHOLDER_3
Doğrulamadan Sonra İntent Başlatan Bir Geri Çağırma Ayarlama
CustomTabsCallback
oturuma geçirildi. Bu ürünü
Daha önce oluşturulan CustomTabsIntent
uygulamasını başlatmak için onRelationshipValidationResult()
kaynak doğrulaması başarılı olur.
MULTI_LINE_CODE_PLACEHOLDER_4
Özel sekmeler hizmeti bağlantısını bağla
Hizmet bağlandığında hizmeti ve bağlantının onCustomTabsServiceConnected()
öğesi başlatılır
sonra çağrılır. Hizmetin bağlantısını doğru şekilde kaldırmayı unutmayın. Bağlama ve bağlamayı kaldırma
genellikle onStart()
ve onStop()
etkinlik yaşam döngüsü yöntemlerinde yapılır.
// Bind the custom tabs service connection.
// Call this in onStart()
CustomTabsClient.bindCustomTabsService(this,
CustomTabsClient.getPackageName(MainActivity.this, null), connection);
// …
// Unbind the custom tabs service.
// Call this in onStop().
unbindService(connection);
Demo uygulama kodu
Özel Sekmeler Hizmeti hakkında daha fazla bilgiyi burada bulabilirsiniz. Bkz. android-browser-helper çalışan bir örnek uygulama için GitHub deposunu kullanın.
Özet
Bu kılavuzda, özel sekme CORS isteklerine rastgele başlıkların nasıl ekleneceği açıklanmaktadır. Onaylanan başlıklar her özel sekme CORS isteğine eklenebilir. Onaylanmayan başlıklar şunlardır: Chrome, CORS isteklerinde genellikle güvenli olmadığı kabul edilir ve Chrome bunları varsayılan olarak filtreler. Bunları ekleyebilirsiniz: Yalnızca aynı kaynaktan gelen, dijital varlık bağlantısıyla doğrulanan istemciler ve sunucular için izin verilir.