2014-11-24 124 views
0

我的主题片段中包含以下代码。它由我的商店中的测试页调用,而不是应用程序。据我所知,我不需要采取任何认证步骤。该代码返回403错误。我无法弄清楚为什么。通过POST(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> 
+0

403错误表示您无权执行请求。我的请求中没有看到任何验证参数。 – Kolban 2014-11-24 02:19:12

回答

1

“web服务器可以响应来自客户端的请求一个网页或资源 返回403禁止HTTP状态代码表明服务器可以达到并理解了请求, 但拒绝采取任何进一步的行动“

所有以4 **开头的HTTP请求都与服务器端问题有关。 403情况下你没有被授权。

您将有可能提供认证参数您的要求是这样的:

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

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

1

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

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

创建应用程序。用合适的工具做你的工作。

+0

我以管理员身份登录,并且该页面仅供管理员使用,我会很好。我想保持简单。我从未开发过Shopify应用程序。如果有办法创建仅用于管理的网页来完成我的目标,则不希望这样做。 – MountainX 2014-11-25 01:30:47