クロスドメインでクッキーの取得
iframeを利用してページを作成しています。
iframeには契約しているASPサービスのページを読み込んでおり、PCの環境では問題なく表示出来ております。
制作中のサイトは、モバイル環境でも表示出来るようレスポンシブルデザインで制作してり、iPhone等でも閲覧することが出来ます。
■問題点■
iPhoneのsafariではiframeでASPサービスのページを読み込んで開くことが出来ません。
検索した所iPhoneのsafariではiframeで読み込んでいるページのクッキーを読み込めない。
またiframeで読み込んでいるASPサービスのページは先にクッキーを読み込まないとページが開かない。
事前にiPhoneのsafariでASPサービスのページを一度開いていれば、クッキーを読み込んでいる為、iframe内にASPサービスのページが読み込まれます。
現状上記の状況になっており悩んでおります。
iPhoneのsafariでASPサービスのページを読み込むには
1,iframeのページを開いた後、ASP側に用意したなんらかのページ(ダミーページ)を開く。
2,1の時点でクッキーが読み込まれると思います。ページが開いたら元のページに戻す。
上記の流れて解決出来ると思っており、参考になるサイト無いかと検索した所、下記のページが参考になると思っております。
http://d.hatena.ne.jp/yshgt/20111117/1321488709
[iPhone][javascript] iPhone Safariでクロスドメインiframeの問題と対策
内容は自分がイメージした通りなります。
ただ、javascript基本を理解出来ていない為、ページの内容を理解して反映させることが出来ません。アドバイスを頂きたいと思い質問させて頂きました。
理解出来ていない点、実行したこと。上記ページにて
1,「A. Cookieチェック」のスクリプトは「iframe内」との事ですので、読み込む側のifarmeページ「head」内に記述した。
疑問点?
読み込む側のifarmeページにスクリプトを記述して、ASPサービス側のクッキーを判別出来るのでしょうか?このスクリプトは、ASPサービス側のファイルに記述するのでしょうか。
2,Cookie が無効だったら、「B. そのドメインのダミーページを開く」のスクリプトを実行する。このスクリプトは何処に記述するのですか。
疑問点?
「戻り元のurlを渡す」を渡すと有りますので、ASPサービス側に用意した、クッキーを取得する為のページ(ダミーページ)に記述するのでしょうか。
「そのドメインのダミーページを開く」と有りますので、読み込む側のifarmeページ内に記述するのでしょうか。
現状ASPサービス側にダミーページを作成して、単独でページを開きスクリプトを実行した所
// parenturl += (parenturl.indexOf("?) > -1) ? "&" : "?"; //
上記の行でシンタックスエラーが出たため、
parenturl += (parenturl.indexOf("?") > -1) ? "&" : "?";
最初の「"?」を「"?"」と修正したら、エラーは無くなりました。
次に、
[Error] ReferenceError: Can't find variable: parenturl
global code (eatCookie.html, line 11)
上記のエラーが出ましたが、parenturl が取得されていない為のエラーだと理解しました。
3,C'. 元のページのURLを取得する(←元のページに戻すために必要)
読み込む側のifarmeページ内に、
<iframe 以下はそのまま記述し「var url =」はASPサービスで読み込むページのURLを指定しました。PCで確認した限り問題無くASPサービスのページを読み込んで表示出来ています。
「iframeのhtmlで以下のようにその情報を取り出す。」
のスクリプトは、そのまま読み込む側のifarmeページ「head」内に記述した。
ページを開いてスクリプトを実行した結果
// var pairs = query.split('&'); //
上記の行で、
[Error] TypeError: 'undefined' is not an object (evaluating 'query.split')
getQueryParams (search_all, line 125)
上記のエラーが出ており、自分では対処出来ませんでした。
現状上記状態で、iPhoneのsafariではiframeでASPサービスのページを読み込めない状態です。何からヒントになる事でも良いのでアドバイスを頂けると幸いです。
他の方法で解決出来る方法が有れば、合わせてアドバイスを頂けると幸いです。
補足
$_COOKIE関数を使っても何も表示されないんすよ(泣) php.iniで何か設定は必要ですか??