Shopify API跨域Ajax请求

问题描述:

我使用下面的代码从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(未找到)”*是根本问题。您看到的唯一原因*“否”Access-Control-Allow-Origin'标题出现在请求的资源上*。“是,大多数服务器不会将标题(如Access-Control-Allow-Origin标题)添加到4xx错误响应 - 相反,服务器通常只会将这些标题添加到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://*.com/questions/45557941/401-error-jwt-token-not-found-using-fetch/45559433#45559433中的解答相同。另请参阅*如何避免CORS预检*部分答案在https://*.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested- resource-whe/43881141#43881141一些可能的方法来解决此问题。 – sideshowbarker

我会救你这样的回答有些头疼。您无法从商店的前端调用/ admin,因为这会将访问令牌公开给您。相反,如果您想从前端访问API,请使用App Proxy模式,以便您安全地进行Ajax调用以实现您的目标。

事实上,你几乎肯定会失败,任何你入侵的成功都会很快让你的店铺遭受恐怖。就像被悲伤的大熊猫取代一样,或者被其他的熊猫所取代。