3. parti çerez iframe hile artık çalışmıyor Safari?
Bu umteenth intikam "nasıl sağlarım 3. parti çerezleri çalışmak Safari" soru ama soruyorum tekrar çünkü bence oyun alanı değişti, belki sonra Şubat 2012. Safari parti çerezleri şu oldu 3 almak için standart numaralarından biri: gizli bir iframe için YAZILAN bazı javascript kullanın. (Kullanılan) kullanıcı 3. parti içeriği ile etkileşim olduğunu düşünerek Safari hile ve sonra çerezleri ayarlamak için izin ver.
Bendüşünüyorumbu kaçamak Google reklamları ile bu numarayı kullandığını ortaya çıktığı hafif skandalı sonrasında kapatıldı. Bu hileyi kullanırken en azından, Safari çerezleri ayarlamak için tamamen mümkün olmuştur. Apple açığı kapatmaya çalıştığını iddia eden bazı rasgele internet kayıtlarını buldum ama herhangi bir resmi açıklama bulamadım.
Gibi bir geri dönüş denedim bile yeniden tasarlama temel üçüncü parti çerçevesi çok içtiğin için TIKLAYIN bir düğme önce içeriği yük olurdu ama bu seviyede doğrudan etkileşim yeterli eritmek Safari soğuk soğuk kalp.
Bu yüzden herkes eğer Safari gerçekten de bu açığı kapattı kesin olarak biliyor mu? Eğer öyleyse, diğer çözümler (el ile, her istek bir oturum KİMLİĞİ de dahil olmak üzere) var mı?
CEVAP
Çalışan basit bir çözüm burada bırakmak istedim sadecekullanıcı etkileşimi gerektirmez.
post I made belirttiÄŸim gibi:
Yapmanız gereken temelde tüm üst sayfa yük.konumu, oturumu oluşturun ve facebook yönlendirin.
index.php
$page_url
uygulama set son sekme/app URL üstüne bu kodu ekleyin ve uygulama herhangi bir sorun olmadan çalışacak göreceksin.
<?php
// START SAFARI SESSION FIX
session_start();
$page_url = "http://www.facebook.com/pages/.../...?sk=app_...";
if (isset($_GET["start_session"]))
die(header("Location:" . $page_url));
if (!isset($_GET["sid"]))
die(header("Location:?sid=" . session_id()));
$sid = session_id();
if (empty($sid) || $_GET["sid"] != $sid):
?>
<script>
top.window.location="?start_session=true";
</script>
<?php
endif;
// END SAFARI SESSION FIX
?>
Bu facebook için yapıldı, ama aslında başka benzer durumlar içinde işe yarar. not:
20-Dec-2012 - İstek İmzalı Bakımı Düzenleme:
Yukarıdaki kod istekleri post veri tutmak, ve eğer başvurunuzu dayanır signed_request, imzalı isteği aşağıdaki kodu deneyin çekinmeyin: gevşek olur
Not: Bu hala doğru düzgün test ediliyor ve ilk versiyonuna göre daha az kararlı olabilir. Geribildirim takdir / kendi risk kullanın.
(Doğru yönde bana burada işaret için CBroe sayesinde çözüm geliştirmek için izin)
// Start Session Fix
session_start();
$page_url = "http://www.facebook.com/pages/.../...?sk=app_...";
if (isset($_GET["start_session"]))
die(header("Location:" . $page_url));
$sid = session_id();
if (!isset($_GET["sid"]))
{
if(isset($_POST["signed_request"]))
$_SESSION["signed_request"] = $_POST["signed_request"];
die(header("Location:?sid=" . $sid));
}
if (empty($sid) || $_GET["sid"] != $sid)
die('<script>top.window.location="?start_session=true";</script>');
// End Session Fix
Odak jQuery Safari çalışmıyor kullanar...
İPad iframe ve Safari, nasıl Kullanıcı...
:active sözde sınıfı'mobil safari...
Nasıl 3. parti site çerçeve iFrame üze...
Safari/Chrome (Y) - Olamaz iframe dike...