CORS 策略已阻止对提取的访问 - Fetch() JS 问题

Access to fetch has been blocked by CORS policy - Fetch() JS issue

我必须用 API 在 klaviyo 中更新配置文件的 属性。所以我做了这个 JS。但由于某些原因,它对我不起作用!这是 API 更新配置文件 属性 的指南。我跟着它但显示了这个问题!有人可以帮我解决这个问题吗?非常感谢

https://apidocs.klaviyo.com/reference/profiles#update-profile

  const options = {method: 'PUT', headers: {'Accept': 'application/json', 'Access-Control-Allow-Origin': '*'}};

  fetch('https://a.klaviyo.com/api/v1/person/01FHGADW5PW4SF33JMWPSN9KQX?api_key=pk_d3af8ba75d110725231231ba795f05ffe77fb&$locale=es-US', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));

另外,这个ajax的结果也是一样的。仍然显示相同的问题。我想获取个人资料信息!第一个是更新个人资料,第二个是获取个人资料信息。但一切都不起作用!好难过!

  var $email = '1919@gmail.com';
  $.ajax({
    type: 'POST',
    url: `https://a.klaviyo.com/api/v2/people/search?api_key=pk_d3af8ba75d110725231123ba795f05ffe77fb&email=${$email}`,
    success: function(res){
      console.log(res);
    }
  });

访问控制header必须放在服务器上,而不是放在客户端上。如果您不控制服务器,您将无能为力。

将您的私钥放在浏览器中是个糟糕的主意。它允许您网站的任何访问者然后能够访问您的所有管理员 API。

正是出于这个原因,Klaviyo 在 API 请求中明确不支持 CORS。请在此处查看 Klaviyo 对类似问题的回复。 https://community.klaviyo.com/apis-40/does-klaviyo-api-support-cors-requests-704?postid=2253#post2253

正确的做法是让您控制的服务器向 Klaviyo 的 api 发出请求。您可以从 JS 向您的服务器发出请求。