Jak*_*ris 13 javascript curl shopify fetch-api
我知道这已经在 SO 上解决了很多次,但所有的答案大多都在“向服务器添加某个标头”的脉络中。在这种情况下,API (Shopify) 工作得很好,可以通过 curl 轻松访问。
我已经尝试过使用 Axios 库和 Fetch API。
referrer,mode以及referrerPolicy在提取选项。我不明白为什么这在 cURL 中可以很好地工作,但在 fetch() 中却不能。
这是我的代码的缩短版本:
const apiKey = 'mykey';
const apiPassword = 'mypass';
const apibase = 'https://my-shop-domain.myshopify.com/admin/';
const endpoint = 'locations.json';
var headers = new Headers({
"Authorization": "Basic " + btoa( apiKey + ':' + apiPassword ),
});
fetch( apibase + endpoint {
method: 'GET',
headers: headers,
mode: 'no-cors',
// cache: "no-store",
// referrer: "client",
// referrerPolicy: "origin",
// credentials: 'include'
}).then( resp => resp.json().then( resp => {
console.log( resp );
})).catch( err => {
console.error(err);
});
Run Code Online (Sandbox Code Playgroud)
返回的错误是
从源“ https://localhost:8080 ”访问“ https://my-shop-domain.myshopify.com/admin/locations.json ”已被CORS政策阻止:对预检请求的响应没有通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
如果 Shopify 不包含Access-Control-Allow-Origin标头,为什么该请求可以与 cURL 一起正常工作?有节点库和 Ruby 库可以访问 Shopify API,因此很难相信它们根本不允许从 javascript 访问。
所以我想我的问题是我可以做些什么来使用 javascript 访问这个 API?
小智 0
您必须使用 FormData 而不是 JSON。
var data = new FormData();
data.append('key', 'value');
fetch('api', {
method: 'POST',
body: data,
})
.then(response => response.json())
.then(data => {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3071 次 |
| 最近记录: |