Amazon web services 通过axios和aws4向aws进行身份验证

Amazon web services 通过axios和aws4向aws进行身份验证,amazon-web-services,axios,amazon-polly,Amazon Web Services,Axios,Amazon Polly,我正试图通过AWS的身份验证,从WordPress编辑器中的javascript代码向AWS Polly发送请求。我在互联网上参考了几个例子,但我总是出错 const CREDS = { accessKeyId: "xxx", secretAccessKey: "xxx" // region: "eu-west-1" }; axios( aws4.sign( { host: "polly.eu-w

我正试图通过AWS的身份验证,从WordPress编辑器中的javascript代码向AWS Polly发送请求。我在互联网上参考了几个例子,但我总是出错

const CREDS = {
      accessKeyId: "xxx",
      secretAccessKey: "xxx"
      // region: "eu-west-1"
    }; 

  axios(
      aws4.sign(
        {
          host: "polly.eu-west-1.amazonaws.com",
          method: "GET",
          url:
            "https://polly.eu-west-1.amazonaws.com/v1/voices?Engine=neural&IncludeAdditionalLanguageCodes=no&LanguageCode=en-US",
          data: {},
          body: {},
          path:
            "/v1/voices?Engine=neural&IncludeAdditionalLanguageCodes=no&LanguageCode=en-US"
        },
        CREDS
      )
    ).then(res => {
      console.log(res);
      // ...
    });
xhr.js:126拒绝设置不安全的头文件“Host”setRequestHeader@xhr.js:126 forEach@utils.js:238 dispatchxhrequest@xhr.js:120 xhrAdapter@xhr.js:12 dispatchRequest@dispatchRequest.js:52 Promise.then(异步)request@Axios.js:61 wrap@bind.js:9 (匿名)@edit.js:88 Vh@react dom.min.js?ver=16.9.0:163 Uh@ react dom.min.js?ver=16.9.0:14 Xh@react dom.min.js?ver=16.9.0:14 af @react dom.min.js?ver=16.9.0:14 Yh@react dom.min.js?ver=16.9.0:164 nd@react dom.min.js?ver=16.9.0:15 nc@ react dom.min.js?ver=16.9.0:15 Of@react dom.min.js?ver=16.9.0:38 Ac @react dom.min.js?ver=16.9.0:39不稳定\u运行优先级@ react.min.js?ver=16.9.0:26 Ma@react dom.min.js?ver=16.9.0:52 Be@ 反应DOM.M.js?VER=16.9:0119席@ DOM.M.JS?VER=16.9:39 js:126拒绝设置不安全的标题“内容长度” setRequestHeader@xhr.js:126 forEach@utils.js:238 DispatchXhreQuest@xhr.js:120 xhrAdapter@xhr.js:12 dispatchRequest @dispatchRequest.js:52 Promise.then(异步)request@Axios.js:61 wrap@bind.js:9(匿名)@edit.js:88 Vh@ react dom.min.js?ver=16.9.0:163 Uh@react dom.min.js?ver=16.9.0:14 Xh @react dom.min.js?ver=16.9.0:14 af@react dom.min.js?ver=16.9.0:14 Yh@react dom.min.js?ver=16.9.0:164 nd@ react dom.min.js?ver=16.9.0:15 nc@react dom.min.js?ver=16.9.0:15 Of @react dom.min.js?ver=16.9.0:38 Ac@react dom.min.js?ver=16.9.0:39 不稳定的运行优先级@react.min.js?ver=16.9.0:26 Ma@ 反应DOM,席.js?VER=16.9:52:Bebe? @react dom.min.js?ver=16.9.0:39 xhr.js:178 GET 403(禁止)

还有这个

      aws4.sign(
        {
          service: "polly",
          region: "eu-west-1",
          method: "GET",
          path:
            "/v1/voices?Engine=neural&IncludeAdditionalLanguageCodes=no&LanguageCode=en-US",
          headers: {},
          body: "{}"
        },
        CREDS
      )
    ).then(res => {
      console.log(res);
      // ...
    });
isURLSameOrigin.js:57未捕获(承诺中)类型错误:无法读取 未定义的属性“协议” 在isURLSameOrigin(isURLSameOrigin.js:57) 在dispatchXhrRequest(xhr.js:109) 在新的承诺() 在xhrAdapter(xhr.js:12) 在dispatchRequest时(dispatchRequest.js:52)


我不明白他为什么这么同谋。为什么我做错了?

AWS4让我头痛了好几天!我找到了一个用放大代替的解决方案。它可以创建正确的标题

import{Signer}来自“@aws-amplify/core”;
让请求={
方法:“GET”,
网址:'https://polly.eu-west-1.amazonaws.com/v1/voices?Engine=neural&IncludeAdditionalLanguageCodes=no&LanguageCode=en-美国",,
数据:“”
} 
允许访问\u信息={
访问密钥:xxxxx,
密钥:xxxxxx,
会话令牌:xxxxx
}
让服务_信息={
服务:'波利',
地区:“欧盟-西部-1”
}
//使用放大符号()函数创建已签名的标题;
让signedRequest=Signer.sign(请求、访问信息、服务信息)
//从标头中删除主机
删除signedRequest.headers['host']
//如果我需要拦截我的响应或请求,我通常会创建一个实例
var instance=axios.create();
让response=wait实例(signedRequest)。然后(函数(response){
控制台日志(响应);
返回响应
}).catch(函数(错误){
//…处理错误
});

我希望这可以帮助您

在第一期中,您不应该提供主机标题。在第二个问题中,您似乎无法向Axios提供URL。不,它不起作用。现在我得到了两个相同的错误(xhr.js:126拒绝设置不安全的标题“主机”,xhr.js:126拒绝设置不安全的标题“内容长度”),如果我站在你的立场上,我会完全从图片中删除aws4、polly和事实上的AWS。您是否可以使用axios针对HTTPS URL对基本端点调用GET,如@jarmod基本端点是什么意思?我需要通过htpp请求调用AWS Polly服务,但我无法通过aws4获得它(AWS-SDK不允许在浏览器中进行身份验证)。你有什么建议>我给了你一个终点。我可能错了,但您在正确使用axios的最初阶段似乎遇到了困难,因此我建议您消除AWS Polly和签名的复杂性,只需确保您能够成功使用axios即可。