私はこのように解決しましたが、server2でセッション変数を保持するとアプリケーションのスケーラビリティが向上しないため、HTML5 localstorageを使用して安心してWebサービスを作成する方がよいでしょう。 ここでは、サードパーティのCookieの問題を解決するために使用したコードを示します。基本的にserver1のゲストはまずserver2に行き、「コイン:D」を取って突然server1に戻ります。このように、server2のセッション変数はすべてのナビゲーションで使用できます。 www.yourserver.com/index.htmlページ
<script src="js/jquery.cookie.js" type="text/javascript"></script>
<script src="js/mobile-detect.js" type="text/javascript"></script>
<script>
var md = new MobileDetect(window.navigator.userAgent);
if (md.userAgent()=='Safari') {
var firstsafariuser = $.cookie('safari-user');
if (firstsafariuser != 'true') {
$.cookie('safari-user', true);
location.href='http://www.yourserver2.com/coin.php?frompage='
+location.href.replace(location.hash,"")+'&hashtags='+location.hash.substr(1);
}
}
</script>
www.yourserver2.com/coin.php
<?php
session_start();
if (isset($_GET["frompage"])&&$_GET["frompage"]!=null){
$url=$_GET["frompage"];
} else {
$url='http://www.yourserver.com';
}
if (isset($_GET["hashtags"])&&$_GET["hashtags"]!=null){
$hash='#'.$_GET["hashtags"];
} else {
$hash='';
}
header('Location:'.$url.$hash);
?>
P.S. window.openは一種のポップアップのように見えるので、広告ブロッカーやブラウザーの設定に問題があるかもしれません。
私は、サードパーティのCookie(Win7 Safari)をブロックするように設定しただけで、SharedObjectは正常に動作しません。私はいくつかの痕跡を取得し、すぐにこの記事を更新します。 –
興味深い...その設定はデフォルトではありませんが、正しいのですか?また、共有オブジェクトへのアクセスをブロックする別のものは、「プライベート」または「シークレット」ブラウジング(ブラウザーがその特定のセッションでのみクッキーを保持する)です。 Chromeにはこれを行うオプションがあります。 –
私は自分のブラウザ(Safari 5.1.7、Mac)でこれをチェックしているはずです。Preferencesで、Privacyタブの "Cookieをブロックする"設定は、 "サードパーティと広告主からの" Cookieをブロックするように設定されています。これはデフォルト値です(私はそれを変更したとは思わない)。しかし、私の場合、SharedObjectへのアクセスはサードパーティのCookieをブロックするときにうまく動作します。 –