连接到Amazon SP-API时出现Cors飞行前错误

连接到Amazon SP-API时出现Cors飞行前错误,cors,amazon,fetch-api,amazon-mws,selling-partner-api,Cors,Amazon,Fetch Api,Amazon Mws,Selling Partner Api,我正在尝试连接亚马逊的销售合作伙伴API以请求和检索报告。按照他们的指导,我创建并配置了IAM策略,注册并自行授权了我的应用程序,并且能够使用我的客户端信息和刷新令牌检索访问代码 然后,我使用CryptoJS成功地散列了我的请求,并能够生成aws4签名 但是,当我使用fetch()向端点发送“post”请求时https://sellingpartnerapi-eu.amazon.com/reports/2020-09-04/reports我收到cors错误: 对飞行前请求的响应未通过访问控制检查

我正在尝试连接亚马逊的销售合作伙伴API以请求和检索报告。按照他们的指导,我创建并配置了IAM策略,注册并自行授权了我的应用程序,并且能够使用我的客户端信息和刷新令牌检索访问代码

然后,我使用CryptoJS成功地散列了我的请求,并能够生成aws4签名

但是,当我使用fetch()向端点发送“post”请求时https://sellingpartnerapi-eu.amazon.com/reports/2020-09-04/reports我收到cors错误:

对飞行前请求的响应未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。如果不透明的响应满足您的需要,请设置请求的 模式设置为“无cors”,以获取禁用cors的资源

如果我在请求中包括'mode':'no cors',则不会在头中发送'x-amz-access-token'

我无法理解fetch()请求用于检索访问代码的原因:

const getAuth = () => {
    fetch('https://api.amazon.com/auth/o2/token', {
        method: 'post',
        headers: {
            'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
        },
        body: `grant_type=refresh_token&refresh_token=${refreshToken}&client_id=${clientId}&client_secret=${clientSecret}`
    })
    .then...
…但不创建报告

const createReport = (accessToken, signature) => {
    fetch('https://sellingpartnerapi-eu.amazon.com/reports/2020-09-04/reports?reportType=GET_MERCHANT_LISTINGS_DATA_LITER&MarketplaceId=A1F83G8C2ARO7P', {
        method: 'post',
        headers: {
            'Authorization': `AWS4-HMAC-SHA256 Credential=${accessKey}/${credentialScope}, SignedHeaders=host;x-amz-access-token;x-amz-date;user-agent, Signature=${signature}`,
            'host': 'sellingpartnerapi-eu.amazon.com',
            'x-amz-access-token': accessToken,
            'x-amz-date': amzDate,
            'user-agent': 'Stock Levels/1.0 (Language=Javascript;)'
        }
    }).then...
SP-API文档还要求在请求中发送“主机”和“用户代理”头,但我的理解是这两种头都不允许

这是JavaScript中的一个限制吗?我是否应该寻找另一种语言来发送这些请求

对于这个新手开发者的任何帮助都将不胜感激

谢谢

[连接到销售合作伙伴API]

[要求报告]

[创建报告]