Liquid、JavaScriptなどに関する質問
<iframe id="iframe" src="https://api.ipgeolocation.io/ipgeo?apiKey=ssss&ip=60.134.229.137&fields=country_code3"></iframe> //例 <script type="text/javascript"> window.onload = function() { try { var doc = document.getElementsByTagName("iframe")[0].contentWindow.document; } catch(e) { alert(e); } alert(doc.body.innerHTML); } </script>
このような形でページロード時に外部apiのどこに国からアクセスしているか返してくれるものを使用しているんですが、cross domainのセキュリティの関係でデータが取れません。
こちらどういった解決方法が考えられますでしょうか?
カスタムアプリを作成すれば別途サーバー上で上記を実行してその内容をliquidに表示などしてクロスドメインを回避などできるものなのでしょうか?
ご教授お願いいたします。
解決済! ベストソリューションを見る。
成功
Shopify は クロスドメインの iframe の読み込みを禁止する記述を http response header に追加してあるので、 iframe で外部ドメインの利用は難しいかと思います。
liquid テンプレートに記述した js から crossdomain の リクエストで利用できるアクセスもと判別 web APIを利用する。探していませんが、たぶんあると思います。
custom アプリの API等を shop のドメインで配信できる shopify proxies というのがありますが、文字通りproxy なので、リクエストもとの ip が pxoy の ip なってしまい、わからず、このケースだと使えないと思います。
追記です。
<?php
header("Access-Control-Allow-Origin: *");
require_once('./config.php');
$query = '{ shop { name } }';
$options = [
'http' => [
'method' => 'POST',
'header' => [
'Content-Type: application/graphql',
'X-Shopify-Access-Token: ' . 'apikey_460a20433333333333333'
],
'content' => $query
]
];
$context = stream_context_create($options);
$contents = file_get_contents($store_host . '/admin/api/graphql.json', false, $context);
// get raw data from the request
$json = file_get_contents('https://api.ipgeolocation.io/ipgeo?apiKey=49506ddc9ad248fdddd9aba816a676b7&ip=60.134.232.17&fields=country_code3');
// Converts json data into a PHP object
$data = json_decode($json, true);
//echo '<pre>';
echo "<script>";
?>
alert("<?php echo $data["country_code3"] ?>")
<?php
echo "</script>";
?>
customアプリを作成し、
php環境で同様にやってみたのですが、
やはり、liquidで読み込む際に
<script src="https://hogehoge.com/graphql.php"></script>
として読んでるので、
hogehoge.comに対するクロスドメインエラーが出てしまいました。。
他のアプリはいったいどうやって自作したコンテンツをliquid上に展開しているのでしょうか・・
成功
Shopify は クロスドメインの iframe の読み込みを禁止する記述を http response header に追加してあるので、 iframe で外部ドメインの利用は難しいかと思います。
liquid テンプレートに記述した js から crossdomain の リクエストで利用できるアクセスもと判別 web APIを利用する。探していませんが、たぶんあると思います。
custom アプリの API等を shop のドメインで配信できる shopify proxies というのがありますが、文字通りproxy なので、リクエストもとの ip が pxoy の ip なってしまい、わからず、このケースだと使えないと思います。
ご返信遅くなりましてすいません!そうなんですね!ありがとうございます!調べてみます!
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024