客户更新请求通过 POSTMAN 工作,而不是通过 AJAX 使用 Shopify 私人应用

Customer update request is working via POSTMAN but not via AJAX using Shopify private app

我正在尝试使用其专用应用更新 Shopify 上的客户标签。我用邮递员试了一下,一切正常,但通过 AJAX,它让我成功回调而不是错误,但在成功中我得到了 auth link 而不是像邮递员那样的客户记录。

 $.ajax({
    type: "POST",
    url: "https://secret:password@store-name.myshopify.com/admin/customers/1569902297146.json",
    contentType: 'application/json',
    data: JSON.stringify({
       customer: {
         id: "1569902297146",
         email: "example@gmail.com",
         tags: "loyalty-member"
       }
     }),
    success: function(msg, b ,b) {
        console.log(msg);
    },
    error: function(a, b, c) {
        console.log(msg);
    }
});

我在互联网上没有找到任何有用的 answer/info。 最后,在 AJAX 命中和试用后,我能够获得成功结果。

$.ajax({
    type: "POST",
    url: "https://secret:password@store-name.myshopify.com/admin/customers/1569902297146.json",
    contentType: 'application/json',
    crossDomain: true,
    data: JSON.stringify({
       customer: {
         id: "1569902297146",
         email: "example@gmail.com",
         tags: "loyalty-member"
       }
     }),
    success: function(msg, b ,b) {
        console.log(msg);
    },
    error: function(a, b, c) {
        console.log(msg);
    }
});

真正的英雄是crossDomain。我不知道为什么 Shoify 不允许它的 PUT 和 POST 请求而不进行 crossDomain: true,

我认为你不需要使用 JSON.stringify

像对象一样发送数据

$.ajax({
    type: "POST",
    url: "https://secret:password@store-name.myshopify.com/admin/customers/1569902297146.json",
    contentType: 'application/json',
    data: {
       customer: {
         id: "1569902297146",
         email: "example@gmail.com",
         tags: "loyalty-member"
       }
     },
    success: function(msg, b ,b) {
        console.log(msg);
    },
    error: function(a, b, c) {
        console.log(msg);
    }
});

你做错了。如果你继续这样在前端暴露你的密码,你很快就会发现有人会用它把你所有的客户变成色情明星的名字,结果你将失去工作和信誉。相反,您使用私有应用程序中内置的应用程序代理来执行非 CORS、安全、可靠的回调,而无需涉及密码。