Liquid、JavaScriptなどに関する質問
App Web Pixelsを使ったShopifyアプリの開発をしております。
App Web PixelsのjavascriptからHTTP通信をすることは可能なのでしょうか?
目的としてはAppProxyを経由して自サーバにHTTPで情報を送信したいです。
register(async ({analytics}) => {
analytics.subscribe('checkout_completed', async (event) => {
const payload = {}; // 省略
await fetch('/apps/app-proxy/example', {
method: 'POST',
body: JSON.stringify(payload),
keepalive: true,
});
});
});
このようなjavascriptを実行すると、
Request are not allowed to the same origin: ***
というエラーが出て、明示的に同一オリジンへのHTTP通信をブロックしていることが伺えます。
ドキュメントではあたかもHTTP通信ができるような例が掲載されていますが、これは例が誤っているだけでしょうか?
初めまして、新垣と申します。
ShopifyのApp Proxyは基本的にプロキシを追加したストアのドメインからのリクエストしか受け付けないようです。
ShopifyのApp Proxyは主にShopifyストアフロントから外部サーバー(自社サーバーなど)へのリクエストを安全に送信するために使用されます。この機能は、Shopifyのストアフロント内で実行されるコード(JavaScriptなど)が、外部のサーバーやAPIにリクエストを送信する際に主に利用されます。しかし、外部アプリから自社サーバーにリクエストを送る際にApp Proxyを「経由する」というのは、少し誤解があるかもしれません。
ドキュメントの該当箇所はサードパーティーのアプリにHTTPリクストを送るもので、ShopifyのApp Proxyに送信している訳ではありません。
下記のように変更することで、HTTPリクエストを送信することは可能なのではないでしょうか。
register(async ({analytics}) => {
analytics.subscribe('checkout_completed', async (event) => {
const payload = {}; // 省略
await fetch('ここを自社サーバーのURLに変更', {
method: 'POST',
body: JSON.stringify(payload),
keepalive: true,
});
});
});
ご回答になっておりませんでしたらご指摘ください。
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024