Как включить режим CORS на стороне интерфейса в GraphQL / AWS Amplify?

#javascript #graphql #aws-amplify

#javascript #graphql #aws-amplify

Вопрос:

Как сделать то же самое для GraphQL AWS Amplify?

 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».

Технически ваша функция amplify 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;
};