Amazon web services 通过axios和aws4向aws进行身份验证
我正试图通过AWS的身份验证,从WordPress编辑器中的javascript代码向AWS Polly发送请求。我在互联网上参考了几个例子,但我总是出错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
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即可。