AWS API Gateway,Lambda,JavaScript CORS
创始人
2024-11-14 04:30:34
0

以下是使用AWS API Gateway,Lambda和JavaScript CORS解决跨域问题的示例代码:

  1. AWS API Gateway配置CORS

在AWS API Gateway中,你可以通过配置CORS来允许特定的源访问你的API。你可以在API Gateway的资源中设置CORS。

Resources:
  MyApiGateway:
    Type: AWS::ApiGateway::RestApi
    Properties:
      Name: MyApiGateway

  MyApiGatewayResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      RestApiId: !Ref MyApiGateway
      ParentId: !GetAtt MyApiGateway.RootResourceId
      PathPart: myresource

  MyApiGatewayMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RestApiId: !Ref MyApiGateway
      ResourceId: !Ref MyApiGatewayResource
      HttpMethod: GET
      AuthorizationType: NONE
      Integration:
        Type: AWS
        IntegrationHttpMethod: POST
        Uri: !Sub
          - arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaFunction.Arn}/invocations
          - LambdaFunction: !Ref LambdaFunction
      MethodResponses:
        - StatusCode: 200
      RequestParameters:
        - MethodRequestParameterName: integration.request.header.Origin
          Required: true

  MyApiGatewayOptionsMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RestApiId: !Ref MyApiGateway
      ResourceId: !Ref MyApiGatewayResource
      HttpMethod: OPTIONS
      AuthorizationType: NONE
      Integration:
        Type: MOCK
        IntegrationResponses:
          - StatusCode: 200
            ResponseParameters:
              method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
              method.response.header.Access-Control-Allow-Origin: "'*'"
              method.response.header.Access-Control-Allow-Methods: "'GET,OPTIONS'"
      MethodResponses:
        - StatusCode: 200
          ResponseParameters:
            method.response.header.Access-Control-Allow-Headers: true
            method.response.header.Access-Control-Allow-Methods: true
            method.response.header.Access-Control-Allow-Origin: true
  1. Lambda函数设置CORS HTTP响应头

在Lambda函数中,你可以在HTTP响应头中设置CORS头部信息,以允许跨域访问。

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        headers: {
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Headers': 'Content-Type',
            'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE'
        },
        body: JSON.stringify('Hello from Lambda!')
    };
    return response;
};
  1. JavaScript中的CORS请求

在JavaScript中,你可以使用XMLHttpRequest或Fetch API来进行CORS请求。

使用XMLHttpRequest示例:

const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/myresource', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        const response = JSON.parse(xhr.responseText);
        console.log(response);
    }
};
xhr.send();

使用Fetch API示例:

fetch('https://api.example.com/myresource', {
    method: 'GET',
    headers: {
        'Content-Type': 'application/json'
    }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));

以上是使用AWS API Gateway,Lambda和JavaScript CORS解决跨域问题的示例代码。请注意,示例代码中的API网关和Lambda函数的配置需要根据你的具体情况进行调整。

相关内容

热门资讯

2026版辅助挂!黑科技软件大... 2026版辅助挂!黑科技软件大全(辅助)竟然真的是有辅助攻略(真实有挂)1、黑科技软件大全模拟器是什...
2026版技巧!大众互娱脚本(... 2026版技巧!大众互娱脚本(辅助)切实存在有辅助神器(有挂解惑)1、大众互娱脚本免费脚本咨询教程、...
近日!边锋嘉兴辅助(辅助)切实... 近日!边锋嘉兴辅助(辅助)切实是真的有辅助脚本(有挂规律)所有人都在同一条线上,像星星一样排成一排,...
一直以来!上饶窝龙辅助(辅助)... 一直以来!上饶窝龙辅助(辅助)切实真的是有辅助技巧(有挂分享)1、许多玩家不知道上饶窝龙辅助辅助怎么...
明白辅助挂!开心斗一番破解版(... 明白辅助挂!开心斗一番破解版(辅助)总是真的是有辅助插件(有挂教学)1、在开心斗一番破解版插件功能辅...
无独有偶!花花生活圈怎么开挂(... 无独有偶!花花生活圈怎么开挂(辅助)果然存在有辅助神器(竟然有挂)该软件可以轻松地帮助玩家将花花生活...
2026版软件!山西扣点免费辅... 2026版软件!山西扣点免费辅助(辅助)本来存在有辅助脚本(详细教程)暗藏猫腻,小编详细说明山西扣点...
黑科技攻略!悟空大厅辅助(辅助... 黑科技攻略!悟空大厅辅助(辅助)切实真的是有辅助攻略(真的有挂);1、不需要AI权限,帮助你快速的进...
2026版总结!微信小程序辅助... 2026版总结!微信小程序辅助新天道辅助(辅助)一直是有辅助技巧(有挂功能)1、点击下载安装,微信小...
第三方辅助挂!三哥玩辅助器软件... 第三方辅助挂!三哥玩辅助器软件(辅助)果然是真的有辅助软件(有挂教学)1)三哥玩辅助器软件辅助插件:...