axios Zendesk票证API引发错误

efzxgjgh  于 2023-02-04  发布在  iOS
关注(0)|答案(1)|浏览(151)

我正在尝试使用他们的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上运行得非常好。我该如何解决这个问题?我错过了什么?

gg58donl

gg58donl1#

“Access-Control-Allow-Origin”标头应包含在来自Zendesk的响应中。请勿将其添加到请求标头中。
您也不应对此端点使用任何身份验证,除非最终用户已登录您的应用,并且电子邮件地址是在验证后从后端的用户配置文件中获取的。Zendesk会显示一条警告,提醒代理最终用户是否已登录,以便他们确定共享信息的置信度。通过在凭据中添加管理员电子邮件和API密钥,您将禁用此检查,票据将被信任为来自请求者。

相关问题