&引用;否';访问控制允许原点'&引用;向Shopify发送JSON请求时出错

&引用;否';访问控制允许原点'&引用;向Shopify发送JSON请求时出错,json,shopify,Json,Shopify,我有Shopify帐户。在管理面板中,管理员可以向Shopify商店添加任意数量的产品 但是我需要由公众用户通过客户端从我的Shopify商店注册定制产品 我尝试了以下代码 $('#send').click(function() { $.ajax({ /* xxxx... : Api key yyyy... : password */ url: 'https://xxxxxxxx

我有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);
            }

        });

    });
$('#发送')。单击(函数(){
$.ajax({
/*xxxx…:Api密钥
yyyy…:密码*/
网址:'https://xxxxxxxxxxxxxxxxxxxxxxxxxx:yyyyyyyyyyyyyyyyyyyyyyy@testing.myshopify.com/admin/orders.json',
键入:“POST”,
数据类型:“json”,
数据:{
“产品”:{
“标题”:“Burton Custom Freetlye 151”,
“body_html”:“好的滑雪板!”,
“卖方”:“伯顿”,
“产品类型”:“滑雪板”,
“标签”:“巴诺,约翰的最爱”,“大空气”
}
},
成功:功能(响应){
警报(响应);
}
});
});
我得到以下错误:


XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源“”。

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

@Deena访问脚本运行的页面,则应该能够运行相同的脚本。如果你错过了,这种Javascript的使用是非常不安全的

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

相反,创建一个私人应用程序,您可以正确地控制安全性,并以可控的方式使用Javascript,而无需向外界公开API密钥

如果您部署这样的不安全代码,并且您的客户最终要为发生的非常糟糕的事情负责,那么您的声誉将很快被破坏,您将对此感到惊讶


对于其他任何人来说,您的前端JS都可以通过调用应用程序代理来实现这一点,提供安全性,并能够使用RestAPI或GraphQL方法进行操作。

阅读以下内容:在某些情况下,这是有效的。例如,如果您正在创建自己的应用程序,只有您将使用该应用程序来提取数据@大卫·拉扎里不会反驳你的幻想,法布里西奥。我相信你能想出很多你认为有效的东西,但是他们的安全性是有问题的,所以我的答案。现在更正确的答案是前端JS调用应用程序代理。我没有指出这一点,所以我现在将编辑我的答案。太有趣了。。。“幻想”为什么要戳?作为一个例子,我正在为本地AdobeIllustrator编写一个脚本,它需要在本地提取一些数据才能使用它。对不起,我不知道你会因为评论而受到侮辱@David Lazarop询问Shopify的JS。如果她按自己的方式做,那将是一场灾难。所以你的评论,除非是针对她的Shopify计划的,我的建议是避开,没有任何价值。当然,你可以用任何东西做任何你想做的事,当然是脚本插画,但这与整个对话无关,为什么?