HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Yakın zamanda, bir web sitesine bir komut dosyası yüklendiğinde, ancak ön ucu başka bir web sitesinde kullanıldığında, komut dosyalarının en son Chrome tarayıcısında düzgün çalışmadığına ilişkin şikayetler aldık; CROSS etki alanı kullanımı denir.
İşte fark ettiğimiz bazı durumlar. Örneğin:
Zaman Aralıkları Takvimi: zaman aralıkları yanıt vermiyor ve seçilemiyor
-"Tarihe göre arama" özelliğine sahip Rezervasyon komut dosyaları, ilk aramadan sonraki bir sonraki adımda bunları 1/1/1970 olarak görüntüler
Catering Sistemi: sepete bir miktar eklendi ancak sepet seçildiğinde boş olduğu belirtiliyor
- Randevu Planlayıcı, Hizmet Rezervasyonu komut dosyaları, aralıklar seçilemez vb.
Ne yazık ki bu, bir süre önce yapılan ve çerezlerin ve özellikle SameSite çerezinin nasıl işlendiğini etkileyen Google Chrome güncellemesiyle ilgilidir. Bu, tarayıcının önceki sürümlerinde bir sorun değildi ancak Google yakın zamanda bu güvenlik politikasını uygulamaya karar verdi. Yaptığı şey, web sitesi sahiplerinin SameSite çerezinin durumunu açıkça ayarlamasını zorunlu kılmaktır, aksi takdirde varsayılan olarak "Lax" durumuna döner. Bunun komut dosyamızı (ve genel olarak çerezlerimizi) etkileme şekli, aynı etki alanından bir istek yürütülmezse tarayıcının çerezin oluşturulmasına izin vermemesidir. Scriptlerimiz tarayıcı çerezlerini kullanmamaktadır ancak çok önemli olan ve web sitesindeki kullanıcı isteklerini benzersiz bir şekilde tanımlayan oturum çerezi bulunmaktadır. Kaydedilmediği ve tarayıcı tarafından aktarılmadığı takdirde otomatik olarak yeni bir oturum çerezi oluşturulur. Tarayıcı bunu yaptığında, oturum çerezi artık aynı olmadığından betiğin tüm verileri kaybolur. Tarayıcı isteğinin başka bir kullanıcı tarafından yapıldığı belirlendi ve sunucudaki oturumunda kaydedilenler artık kullanılamıyor (oturum kimliği artık farklı olduğundan). Bu nedenle scriptler herhangi bir seçime, slot tıklamasına, seçilen tarihe, sepete eklenen ürüne vb. tepki vermiyor gibi görünüyor. Her şey ayarlanmamış veya seçilmemiş gibi görünüyor.
Bu nedenle oturum çerezi çok önemlidir ve ayarlanması gerekir. Bizim script ile kullanıcı detayları arasındaki bağlantımızdır ve o olmadan scriptler çalışmaz. SameSite çerezi oturum çerezini engellediğinden (açıkça ayarlanmamışsa) bunun düzeltilmesi gerekir. Bunu tüm komut dosyalarımızda yaptık, ancak daha önce komut dosyaları satın alıp indiren ve bunları alanlar arası kullanan tüm müşterilerimiz Chrome tarayıcısında bu sorunu yaşayacaktır. Bu sorunun çözülmesi basittir ve aşağıda bunu kendi başınıza nasıl çözebileceğinizi ayrıntılı olarak açıklayacağız.
ÖNEMLİ: Bu güncelleme, en son çerçevemizi temel alan komut dosyalarına zaten dahil edilmiştir!
Söylediğimiz gibi, SameSite çerezi ayarlanmamışsa, varsayılan olarak "Lax" durumuna geçer, bu da üçüncü taraf çerezlerinin (diğer alanlardaki çerezlerin) kaydedilmesini ve kullanıcı isteklerine aktarılmasını engeller. Bu durumda, çerezler yalnızca tarayıcının URL'sindeki alan adı çerezin alan adı (birinci taraf çerezi) ile eşleştiğinde ayarlanır. Yapmamız gereken, üçüncü taraf çerezlerin web sitesi genelinde kullanıcıları izlemesine olanak tanıyan bu çerez durumunu "Yok" olarak ayarlamaktır. Ancak "SameSite=None" olarak işaretlenen çerezlerin aynı zamanda "Güvenli" olarak da işaretlenmesi gerektiğini unutmayın. Bu, tarayıcı için gereklidir ve bu aynı zamanda bu çerezin yalnızca HTTPS üzerinden yapılan istekler yoluyla oluşturulacağı ve gönderileceği anlamına da gelir.
Çözüm
ÖNEMLİ: Bu değişiklik yalnızca uzak web sitelerine eklenen ön uç entegrasyonu için javascript kodunu kullanan komut dosyalarını etkiler. Komut dosyasını aynı etki alanında kullanıyorsanız veya komut dosyalarından birini PHP entegrasyon koduyla birlikte kullanıyorsanız bu güncellemeye gerek yoktur.
Komut dosyanız güncelleme kategorisindeyse SameSite çerez bayrağını "Yok" ve "Güvenli" olarak ayarlamanız gerekir.
Bu nasıl yapılır?
1) Bu dosyayı açın:
app/controllers/pjFront.controller.php
2) Şu adı verilen işlevi bulun: korumalı statik işlev AllowCORS()
3) Bu satırın başlık listesine eklenmesi gerekir:
başlık('Set-Cookie: '.session_name().'='.session_id().'; SameSite=None; Secure');
yani liste buysa:
başlık('P3P: CP = "TÜM DSP COR CUR ADM TAI BİZİM IND COM NAV INT"');
başlık("Erişim-Kontrol-İzin Ver-Origin: $origin");
başlık ("Erişim Kontrolü-İzin Verme-Kimlik Bilgileri: doğru");
başlık ("Erişim Kontrolü-İzin Verme Yöntemleri: POST, GET, SEÇENEKLER");
başlık ("Erişim-Kontrol-İzin Ver-Başlıklar: Köken, X-İstenen-İle");
buna benzer bir satır daha olacak:
başlık('P3P: CP = "TÜM DSP COR CUR ADM TAI BİZİM IND COM NAV INT"');
başlık("Erişim-Kontrol-İzin Ver-Origin: $origin");
başlık ("Erişim Kontrolü-İzin Verme-Kimlik Bilgileri: doğru");
başlık ("Erişim Kontrolü-İzin Verme Yöntemleri: POST, GET, SEÇENEKLER");
başlık ("Erişim-Kontrol-İzin Ver-Başlıklar: Köken, X-İstenen-İle");
başlık('Set-Cookie: '.session_name().'='.session_id().'; SameSite=None; Secure');
ÖNEMLİ: Komut dosyası, geçerli SSL'ye sahip bir web sitesi olan HTTPS'nin altına kurulmalıdır!
Komut dosyası HTTPS altında kurulmamışsa ancak etki alanında SSL varsa:
1. Bu dosyayı app/config/config.inc.php açın
2. Kurulum URL'sini http yerine https ile başlayacak şekilde değiştirin ve kaydedin.
3. Entegrasyon kodunu kullanıldığı tüm sayfalarda değiştirin.
Komut dosyanızın artık Chrome'da da çalıştığını doğrulamak için tarayıcı önbelleğini temizleyebilir ve testler yapabilirsiniz!
SameSite çerezi ve olası durumları ile bununla ilgili Chrome güncellemesi hakkında ayrıntıların yer aldığı bazı bağlantılar:
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 0
- Görüntüleme
- 44
- Cevaplar
- 1
- Görüntüleme
- 40
- Cevaplar
- 1
- Görüntüleme
- 47
- Cevaplar
- 0
- Görüntüleme
- 54
- Cevaplar
- 2
- Görüntüleme
- 47
