发送JSON请求到Shopify时出现“No'Access-Control-Allow-Origin'”错误

时间:2014-01-13 09:42:24

标签: json shopify

我有Shopify帐户。在“管理”面板中,管理员可以将任意数量的产品添加到Shopify商店中。

但是我需要公共用户通过客户端从我的Shopify商店注册自定义产品。

我尝试过以下代码。

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

        $.ajax({

                /* xxxx...  : Api key
                   yyyy...  : password */
            url: 'https://xxxxxxxxxxxxxxxxxxxxxxxxxx:yyyyyyyyyyyyyyyyyyyyyyy@testing.myshopify.com/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”标头。因此,不允许原点“http://testing.myshopify.com”访问。

2 个答案:

答案 0 :(得分:2)

@Deena。万一你错过了这种Javascript的使用是非常不安全的

您正在公开您的API密钥,因此任何人都可以更改或删除您的整个商店。

而是创建一个私有应用程序,您可以正确地控制安全性,并以受控方式使用Javascript,而不会将API密钥暴露给全世界。

如果您部署这样的不安全代码并且您的客户最终要对发生的非常糟糕的事情负责,您会惊讶于您的声誉会被破坏的速度。

对于涉及此主题的任何其他人,您的前端JS可以通过调用应用程序代理来实现此目的,从而提供安全性以及使用RestAPI或GraphQL方法进行破解的能力。

答案 1 :(得分:0)

这里的问题是你的起源是不安全的(http://)而资源是安全的(https://)。这会导致浏览器将它们视为不同的域,并且由于您的资源(orders.json)未指定应允许来自http://版本的URL的请求,因此请求失败,因为默认情况下跨域请求是出于安全考虑而被禁止。如果通过https://。

访问脚本运行的页面,则应该能够运行相同的脚本