Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 被CORS策略“阻止”;。。。没有HTTP ok状态“;(放大和反应JS、AWS网关和Lambda)_Reactjs_Cors_Amplify - Fatal编程技术网

Reactjs 被CORS策略“阻止”;。。。没有HTTP ok状态“;(放大和反应JS、AWS网关和Lambda)

Reactjs 被CORS策略“阻止”;。。。没有HTTP ok状态“;(放大和反应JS、AWS网关和Lambda),reactjs,cors,amplify,Reactjs,Cors,Amplify,由于CORS的支持,我几乎不好意思问这个问题,但我无法通过: Access to XMLHttpRequest at 'https://a93xxxxx.execute-api.eu-west-1.amazonaws.com/dev[object%20Object]' from origin 'https://www.example.com' has been blocked by CORS policy: Response to preflight request doesn't pass a

由于CORS的支持,我几乎不好意思问这个问题,但我无法通过:

Access to XMLHttpRequest at 'https://a93xxxxx.execute-api.eu-west-1.amazonaws.com/dev[object%20Object]' from origin 'https://www.example.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
我甚至用Amplify发布了我的React项目,并试图从真实域名中删除与开发环境有关的内容(运行npm版本6.14.8的Cloud 9)

我还做了一个运行Chrome的测试,带有禁用web安全标志

My Lambda函数包含以下内容(现成存根)

注意,我已经取消了CORS请求部分的注释,响应状态代码设置为200。 从客户端发送提交表单时,我的应用程序中执行的代码:

    uploadcontactusdata = async data => {
    try {
        console.log("Contact Us pressed")
        const settings = {
            method: 'POST',
            body: JSON.stringify(data),
            
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
            }
        }

        const fetchResponse = await API.post('econtactus', settings);
        Notification({
            title: 'Success',
            message: 'Notification has been sent',
            type: 'success'
        });
    }
    catch (err) {
        console.log("unable to send");
        console.error(err)
    }
}

我使用Amplify(版本4.41.2)创建了API网关+Lambda。不知道现在还能去哪里看。任何线索都将不胜感激。谢谢

通过使用appsync,您可以完全摆脱对api网关的需求

amplify add api
选择graphql(我没有尝试使用rest,但您不应该需要它),选择基本模式,编辑它(如果您愿意),然后发布。发布后,您可以创建自己的方法。您可以在架构下的AppSync UI中查看此内容

type Mutation {
  yourMethod(input: Input!): TableName <-- add your method to the list
}
回应:

$util.toJson($context.result)

现在,您可以直接从UI调用lambda并返回结果,而不用担心CORS或管理API网关。

当请求的某些条件匹配时,浏览器会执行选项“飞行前请求”。这里有处理它的说明:谢谢,我没有想到使用graphql调用函数。从长远来看,我需要解决这个问题。在短期内,我使用ses将电子邮件发送到一个桶中,从而实现了目标。
{
  "version" : "2017-02-28",
  "operation": "Invoke",
  "payload": $util.toJson($context.args)
}
$util.toJson($context.result)