2014-01-13 62 views
0

我有Shopify帳戶。在管理控制檯中,管理員可以將任意數量的產品添加到Shopify商店中。「No Access-Control-Allow-Origin'」發送JSON請求到Shopify時出錯

但我需要由我的Shopify商店通過客戶端的公共用戶註冊自定義產品。

我試過下面的代碼。

$('#send').click(function() { 

     $.ajax({ 

       /* xxxx... : Api key 
        yyyy... : password */ 
      url: 'https://xxxxxxxxxxxxxxxxxxxxxxxxxx:[email protected]/admin/orders.json', 
      type: 'POST', 
      dataType: 'json', 
      data: { 
        "product": { 
        "title": "Burton Custom Freestlye 151", 
        "body_html": "<strong>Good snowboard!</strong>", 
        "vendor": "Burton", 
        "product_type": "Snowboard", 
        "tags": "Barnes & Noble, John's Fav, \"Big Air\"" 
        } 
       }, 
      success: function(response) { 

       alert(response); 
      } 

     }); 

    }); 

我收到以下錯誤:

的XMLHttpRequest無法加載https://testing.myshopify.com/admin/orders.json。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此'Origin'http://testing.myshopify.com'不允許訪問。

+0

閱讀此:http://stackoverflow.com/questions/8414786/javascript-cross-domain-call-call-from-http-to-https – Asken

回答

0

這裏的問題是你的起源是不安全的(http://)和資源是安全的(https://)。這會導致瀏覽器將它們視爲不同的域,並且由於您的資源(orders.json)沒有指定來自http://版本URL的請求應該被允許,所以請求失敗,因爲默認情況下跨域請求是出於安全考慮禁止使用。如果您通過https://訪問腳本運行的頁面,則應該可以運行相同的腳本。

2

@Deena。如果你錯過了它這種使用Javascript是可怕的不安全

你正在使你的API密鑰公開,因此任何人都可以改變或擦除你的整個商店。

取而代之的是創建一個私人應用程序,您可以正確控制安全性,並以受控的方式使用Javascript,而無需將API密鑰暴露給全世界。

如果您部署這樣的不安全代碼,並且您的客戶端最終對發生的非常糟糕的事情負責,您會驚訝於聲譽被快速破壞的速度。