如何在 GraphQL/AWS Amplify 的前端启用 CORS 模式?

Posted

技术标签:

【中文标题】如何在 GraphQL/AWS Amplify 的前端启用 CORS 模式?【英文标题】:How to enable the CORS mode on frontend side in GraphQL/AWS Amplify? 【发布时间】:2021-01-14 14:03:27 【问题描述】:

AWS Amplify 的 GraphQL 如何做同样的事情?

fetch('https://trusted-api.co.jp', 
  mode: 'cors'
);

我既没有找到如何做的文档,也没有找到提到 cors 的源代码。

参考

常规的graphQL操作可以如下调用:

import AWSAmplifyAPI,  graphqlOperation as graphQL_Operation, GraphQLResult  from "@aws-amplify/api";
import Observable from "zen-observable";

export default class DataBaseService 

  public static async sendRequestAndExtractDataFromResponse(
      graphQL_RawRequest: string,
      requestVariables?: object
  ): Promise<unknown> 

    const serverRawResponse: GraphQLResult | Observable<unknown> =
        await AWSAmplifyAPI.graphql(graphQL_Operation(graphQL_RawRequest, requestVariables));
   // ...
  

【问题讨论】:

【参考方案1】:

您需要在服务器端进行配置,因此服务器端需要批准这个“CORS”问题。

从技术上讲,您的放大 lambda 函数将添加类似于以下内容的代码:

exports.handler = async (event) => 
  const response = 
    statusCode: 200,
    //  Uncomment below to enable CORS requests
    headers: 
      "Access-Control-Allow-Origin": "*",
    ,

    //   headers: 
    //     "Access-Control-Allow-Headers" : "Content-Type",
    //     "Access-Control-Allow-Origin": "https://www.example.com",
    //     "Access-Control-Allow-Methods": "OPTIONS,POST,GET"
    // ,
    body: JSON.stringify("Hello from Lambda!"),
  ;
  return response;
;

【讨论】:

以上是关于如何在 GraphQL/AWS Amplify 的前端启用 CORS 模式?的主要内容,如果未能解决你的问题,请参考以下文章

AWS-LAMBDA:没有这样的文件或目录,打开 './src/graphql/schema.graphql'

使用 graphql、aws lambda 和无服务器框架的多个 url 路径选项错误

AWS amplify add auth:如何在执行 amplify cli 后添加重定向登录 URI

Flutter 和 Amplify/Cognito:如何使用 Flutter 更新 Amplify/cognito 中的电话号码

AppSync/Amplify - 如何定义 GraphQL 订阅

Swift - AWS Cognito 使用 Amplify - 如何在 swift 登录后获取令牌?