【发布时间】:2017-01-18 13:13:16
【问题描述】:
我从我的商店创建了一个私有应用程序,并尝试使用 ajax 和 curl 访问 https://API_KEY:PASS@STORE_NAME/admin/orders.json URL。如果我使用 curl 但不使用 ajax,它会起作用。谁能在这里解释问题是什么?
【问题讨论】:
标签: ajax shopify private php-curl
我从我的商店创建了一个私有应用程序,并尝试使用 ajax 和 curl 访问 https://API_KEY:PASS@STORE_NAME/admin/orders.json URL。如果我使用 curl 但不使用 ajax,它会起作用。谁能在这里解释问题是什么?
【问题讨论】:
标签: ajax shopify private php-curl
这可能是跨域问题。如果您使用 jQuery,请尝试将 dataType 设置为 jsonp 进行 ajax 调用,如下所示:
$.ajax("url", {
dataType: "jsonp",
success: function(data) {
console.log(data);
}
})
【讨论】:
就像其他答案所说,这是一个跨源问题(参见CORS)
通常处理它的最佳方法是Shopify App Proxy,但这不适用于私人应用,只有自定义应用。最好的办法是构建一个自定义应用程序并使用 OAuth2 进行身份验证,假设没有其他原因您选择构建一个私有应用程序。
如果您的应用的性质允许更改为自定义应用,则应用代理将为您提供一个 {store-name}.myshopify.com/{resource} 端点,该端点将绕过跨域问题,但转发对远程服务器的请求。
另外,当您使用 JS 并且某些东西不起作用时,请检查控制台并分享任何错误。没有人能真正告诉你为什么它不能在没有看到代码、错误或两者的情况下工作,但这是 AJAX 的一个常见的绊脚石,因为所有这些跨域安全性东西都已经到位,我 90%肯定是答案。
【讨论】: