AWS API网关通过卷曲工作,但通过JavaScript不工作

问题描述 投票:0回答:1

嗨,我试图打它的做工上的卷曲罚款AWS API网关而不是从JS Brocking工作针对CRO政策。但是,从AWS我已经启用CROS

$.ajax({
        url: ApiURL,
        type: 'POST',
        dataType: 'json',
        contentType: "application/json",
        data: JSON.stringify(hash),
        async: true,
        crossDomain: true,
        crossOrigin: false,
        headers: {
        'accept': 'application/json',
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Headers': '*',
        'Access-Control-Allow-Methods': 'POST'
        },

卷曲方法通过AJAX打

$.ajax({
        url: stripTrailingSlash(BASE_URL) + '/contact/send',
        type: 'POST',
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(body),
        async: true,
        headers: {
            'X-CSRF-Token': csrfToken
        },

我的API网关POST结构是这样

我的拉姆达响应我不喜欢这

const response = {
statusCode: statusCode,

 headers:{ 'Access-Control-Allow-Origin' : '*' },
body: JSON.stringify({
  message: responceMessage,
  input: event,
}),
};
callback(null, response);

错误我收到我的浏览器

amazon-web-services aws-lambda cross-domain aws-api-gateway
1个回答
1
投票

它工作在卷曲,因为,袅袅不发送OPTIONS请求,但浏览器发送它,只要你是一个CORS请求。

响应OPTIONS请求是什么浏览器使用,以检查是否允许调用API。

当您启用CORS在API网关,它将添加下列头

'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Methods': 'POST'

但如果您启用代理请求整合,API网关不再修改,添加标题的响应。因此,它不会工作,除非你的lambda函数本身添加这些头。

© www.soinside.com 2019 - 2024. All rights reserved.