如何在 GraphQL/AWS Amplify 的前端启用 CORS 模式?
How to enable the CORS mode on frontend side in GraphQL/AWS Amplify?
如何对 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));
// ...
}
}
你需要在服务器端配置这个,所以这个“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;
};
如何对 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));
// ...
}
}
你需要在服务器端配置这个,所以这个“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;
};