我正在尝试使用他们的API构建一个自定义Zendesk票证表单。我制作了一个标准的HTML表单,然后在提交时构建票证并通过axios
发送:
const body = {
request: {
subject: 'subject',
comment: {
body: `comment\n\n------------------\nSubmitted from: ${pathname}`,
uploads:[],
},
requester: {
name: 'name',
email: 'email@domain.com',
},
},
};
return axios.post(`https://wandai.zendesk.com/api/v2/tickets`, body, {
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
Authorization: `Basic ${import.meta.env.VITE_ZENDESK_KEY}`,
},
});
我的Zendesk密钥可以从import.meta.env.VITE_ZENDESK_KEY
的env中获得。这个方法可以通过/api/v2/uploads
API上传文件,但是这个代码片段会引发一些错误:
Access to XMLHttpRequest at 'https://wandai.zendesk.com/api/v2/tickets' from origin 'http://localhost:3000' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.
我的请求中有标题......这是否意味着API不允许cors?是因为它是localhost
吗?在这种情况下,内置小部件究竟是如何进行调用的?小部件在localhost
上运行得非常好。我该如何解决这个问题?我错过了什么?
1条答案
按热度按时间gg58donl1#
“Access-Control-Allow-Origin”标头应包含在来自Zendesk的响应中。请勿将其添加到请求标头中。
您也不应对此端点使用任何身份验证,除非最终用户已登录您的应用,并且电子邮件地址是在验证后从后端的用户配置文件中获取的。Zendesk会显示一条警告,提醒代理最终用户是否已登录,以便他们确定共享信息的置信度。通过在凭据中添加管理员电子邮件和API密钥,您将禁用此检查,票据将被信任为来自请求者。