2017-09-26 122 views
0

私は以下のコードを使用して、shopifyから顧客の詳細を取得しています。私はshopify管理者から自分のドメインを他のドメインにリダイレクトしました。Shopify APIクロスドメインAjaxリクエスト

function setEmailWithLoggedInUser(callback) { 
$.ajax({ 
     url: 'https://new-website-shopify.myshopify.com/admin/customers/'+__st.cid+'.json', 
     crossDomain: true, 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader("Authorization", "Basic XXXXXXXXXXXX") 
     }, success: function(data){ 

      console.log(data); 

      if(callback) 
      callback();  
     } 
}) 

解決策を見つけることができませんでした。 私はこのエラーを取得しています:

Failed to load resource: the server responded with a status of 404 (Not Found)

XMLHttpRequest cannot load https://new-website-shopify.myshopify.com/admin/customers/7094124372.json . Response to preflight request doesn't pass access control check:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' https://www.beirutshopping.com ' is therefore not allowed access. The response had HTTP status code 404.

+0

*「サーバーが404(Not Found)の状態で応答しました」*が根本的な問題です。 「No-Access-Control-Allow-Origin」ヘッダーが要求されたリソースに存在する唯一の理由は、「ほとんどのサーバーが4xxにAccess-Control-Allow-Originヘッダーのようなヘッダーを追加しないということですエラーレスポンス - 代わりに、サーバーは一般的に2xxの成功応答にそれらのヘッダーを追加します。ブラウザのアドレスバーに 'https:// new-website-shopify.myshopify.com/admin/customers/7094124372.json'というURLを(実際のホスト名が何であれ)貼り付けるとどうなりますか? – sideshowbarker

+0

ブラウザに実際のホスト名を使用して「https://new-website-shopify.myshopify.com/admin/customers/70 94124372.json」を貼り付けると、同じドメイン名にリダイレクトされます。 api資格情報を取得し、正しく応答を示します。 – user3326941

+0

あなたは 'https:// new-website-shopify.myshopify.com/admin/customers /'を制御しますか?あなたはそれに設定を変更することができますか?どのサーバーバックエンドが実行されますか?ここで打つ問題は、https://stackoverflow.com/questions/45557941/401-error-jwt-token-not-found-using-fetch/45559433#45559433にある回答と同じであるようです。その答えのCORSプリフライト*セクションを避ける方法も参照してください。https://stackoverflow.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested- resource-whe/43881141#43881141これを回避するいくつかの方法があります。 – sideshowbarker

答えて

0

私はこの答えをあなたにいくつかの頭痛の種を保存します。ストアのフロントエンドから/ adminを呼び出すことはできません。これは、アクセストークンを公開するためです。代わりに、フロントエンドからAPIにアクセスする場合は、App Proxyパターンを使用して、目標を達成するためにAjax呼び出しを安全に行うことができます。

それは、あなたが失敗することはほとんど確実であり、存在を突き抜けば、あなたの店はすぐに恐怖にさらされます。悲しいパンダで置き換えられる、そうでなければreckdであるように。

関連する問題