Cors 带有cognito授权人cros错误的api网关终结点?
我将API网关与cognito一起用于授权GET端点。 如果我通过postman(node\python代码)运行它,它会非常好用。 但当我在CHROME上运行react应用程序时,我会得到Cors 带有cognito授权人cros错误的api网关终结点?,cors,aws-api-gateway,amazon-cognito,Cors,Aws Api Gateway,Amazon Cognito,我将API网关与cognito一起用于授权GET端点。 如果我通过postman(node\python代码)运行它,它会非常好用。 但当我在CHROME上运行react应用程序时,我会得到 从源代码的“我的路径”访问XMLHttpRequest”http://localhost:3000'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。 有关我的api网关api的详细信息 使用cognito authorizaer获取请求,需要授权头 g
从源代码的“我的路径”访问XMLHttpRequest”http://localhost:3000'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。
有关我的api网关api的详细信息
授权
头curl-v-X选项https://
时看到的异常是*连接状态已更改(最大并发流==128)!
从“axios”导入axios;
常量值=
const url1=“https:…”
常数头={
“授权”:价值,
}
函数getPoints(){
axios.get(
url1,标题
)。然后((响应)=>{
console.log(“successss”);
console.log(响应)
//log(response.json());
},(错误)=>{
控制台日志(“errorrrrr”);
console.log(错误);
});
}
函数App(){
返回(
{getPoints()}
cors试验
);
}
导出默认应用程序;
你知道我做错了什么吗?任何帮助\提示都会有帮助
thxCORS头(访问控制允许-*
)是响应头。您不应该在请求中指定它们
API网关具有您应该使用的
如果您决定仍然要使用自己的处理程序,请确保如果您将您的Cognito授权人设置为默认授权人,请在
OPTIONS
方法中将授权人显式设置为NONE
authorizer。但是请注意我写的,在选项上没有Cognito授权我的道歉,让我困惑的是:“如果没有cognito,它就可以工作,我在添加cognito auth的那一刻就将内容输入到我的react应用程序中,我得到了CORS错误。我知道我做错了什么吗?”更新。您必须在选项处理程序顶部的get和post处理程序中返回相应的头。但是,正如您所看到的,我返回的头是“``访问控制允许源代码”:“*”``我已经更新了几点,但这并不复杂,如果真的没有授权程序集,并且您的选项处理程序正在正确调用和如果反应正确,那么没有明确的原因;不行。请仔细检查您声明的所有内容是否准确。在curl OPTIONS响应中获取401(未经授权)表明API网关端点未正确配置为CORS。我会删除您的选项配置,并通过AWS控制台操作菜单添加默认设置,直到它正常工作。浏览器无法发送选项的身份验证。在curl OPTIONS返回200之前,它不太可能工作。401建议将“选项的身份验证”设置为“无”以外的其他值。另外,代码示例中的auth头似乎缺少令牌的承载前缀,例如“Authorization”:“Bearer”+value
(承载和令牌之间的空格)。此外,如果根本没有配置选项动词,您仍然可以在API网关中看到误导性的401选项。这使得它看起来好像被错误配置为需要auth,但实际上它只是没有启用。您是否可能向API添加了选项配置,但忘记将其部署到阶段端点?(即,您可以在API的控制台中看到它,但在控制台的Stages部分中不可见)
"headers": {
'Access-Control-Allow-Headers': 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
"Access-Control-Allow-Credentials": 'true',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS, GET, POST',
},
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 401
< date: Mon, 26 Apr 2021 08:03:37 GMT
< content-type: application/json
< content-length: 26
< x-amzn-requestid: 5f305d7d-70cc-4751-81f5-581345521f00
< x-amzn-errortype: UnauthorizedException
< x-amz-apigw-id: eYcKEHB2vHcFSLw=
<
import axios from "axios";
const value = <my id token>
const url1 = "https:...."
const headers ={
"Authorization": value,
}
function getPoints(){
axios.get(
url1, headers
).then((response) => {
console.log("sucessssssss");
console.log(response)
// console.log(response.json());
}, (error) => {
console.log("errorrrrr");
console.log(error);
});
}
function App() {
return (
<div className="App">
{getPoints()}
cors test
</div>
);
}
export default App;