通过POST(ajax)发送JSON数据;从Shopify获得403

时间:2014-11-24 02:14:16

标签: jquery ajax json shopify

我的主题片段中有以下代码。它由我商店中的测试页面调用,而不是应用程序。据我所知,我不需要采取任何授权步骤。该代码返回403错误。我无法弄清楚原因。

$(document).ready(function () {

$("#process-all-products").click(function(e) {     
    e.preventDefault();
    var resultDiv = $("#resultDivContainer");
    var collection_id;
    var toAdd = new Array();
    for(i=0; i < length; i++){
        toAdd.push({
            variant_id: $("#variant-"+i).val(),        
            quantity_id: $("#quantity-"+i).val() || 0
        });
    }

  function createCollection(){
      var params = {
        type: 'POST',
        url: '/admin/custom_collections.json',
        data: { "custom_collection": { "title": "my_collection_title"  } },
        dataType: 'json',
        success: function (response) {
            switch (response) {
                case true:
                    collection_id = response.id;
                    console.log("collection_id [" + collection_id + "]");
                    break;
                default:
                    resultDiv.html(response);
            }
        },            
        error: function (xhr, ajaxOptions, thrownError) {
          console.log("create collection failed!");
          alert(xhr.status);
          alert(thrownError);
        }
      };
      $.ajax(params);
  };
  createCollection();
});
});

</script>

2 个答案:

答案 0 :(得分:1)

  

&#34; Web服务器可以返回403 Forbidden HTTP状态代码,以响应客户端对网页或资源的请求   表示可以访问服务器并理解请求,   但拒绝采取任何进一步的行动&#34;

以4 **开头的所有HTTP请求都与服务器端问题有关。 如果是403,则表示您未获得授权。

您必须为您的请求提供身份验证参数,如下所示:

https://serverfault.com/questions/371907/can-you-pass-user-pass-for-http-basic-authentication-in-url-parameters

希望这有帮助,因为从你的代码我不能得到任何其他答案

答案 1 :(得分:1)

你真的不想做你试图做的事情。基础知识在这里工作。在Shopify商店中,您是面向公众的以客户为中心的HTTP世界的一部分。要随时调用/ admin端点,需要进行身份验证(登录到商店)或通过经过身份验证的API调用。

进行经过身份验证的API调用的唯一方法是使用身份验证令牌。因此,如果您没有以管理员身份登录并且想要使用Javascript进行API调用,那么您的API令牌将对公众可见,然后他们可以根据令牌安全设置立即按照您的商店进行操作,包括如果他们愿意,可能会把它变成一个同性恋商场。

制作应用程序。用正确的工具完成你的工作。