当前位置: 首页 > 知识库问答 >
问题:

阿波罗客户端不工作与CORS

宰父桐
2023-03-14

我在AWS Lambda上写一个图形服务器组件(不使用图形服务器)。在客户端,我使用阿波罗客户端。我设置的λ函数的响应

const response = {
    statusCode: 200,
    headers: {
        "Access-Control-Allow-Origin": "*" // Required for CORS support to work
    },
    body: JSON.stringify({
        result: 'mock data',
        input: event,
    }),
};
callback(null, response);

在使用ApolloClient的客户端上,我得到以下错误

对起飞前请求的响应没有通过权限改造检查:请求的资源上没有“访问控制允许起源”标头。因此,不允许访问起源http://localhost:8080。

然而,当我使用axios之类的东西执行相同的请求时,它就可以正常工作了。此外,当我只是在像邮递员这样的地方执行请求时,我看到响应上启用了“访问-控制-允许-起源”设置。这是阿波罗客户端的已知问题吗?我如何解决这个问题?

共有3个答案

栾钟展
2023-03-14

我们正在做的第一个错误是从“apollo boost”导入apollo客户端。实际上,我们必须从“apollo客户端”导入apollo客户端。

import ApolloClient from 'apollo-client';

因为,来自apollo的ApolloClient只支持较小的配置选项子集。阿波罗客户端的ApolloClient为您提供了所有的配置选项。

然后,我们可以只向Apollo客户端实例提供链接和缓存

import { InMemoryCache } from "apollo-cache-inmemory";
import { createHttpLink } from 'apollo-link-http';

const client = new ApolloClient({ 
    link: new createHttpLink(
        {
            uri: "Your QraphQL Link"
        }
    ),
    cache: new InMemoryCache(),
});
子车安和
2023-03-14

我假设您正在使用AWS API网关。

一个问题是:您是否为网关启用了CORS?看看如何

我相信这应该可以解决您的问题,如果您也发送cookie,您也可以设置访问-控制-允许-凭据:true标头。'

昌学
2023-03-14

要解决Apollo的CORS问题,您必须将no CORS选项传递给底层的fetch

js prettyprint-override">import ApolloClient from "apollo-boost";

const client = new ApolloClient({
  uri: "your client uri goes here",
  fetchOptions: {
    mode: 'no-cors',
  },
});

这不是一个特定的Apollo问题,而是一个要在fetch端处理的配置,有关更多信息,请参阅此:https://developers.google.com/web/ilt/pwa/working-with-the-fetch-api#cross-原产地申请

我想知道为什么它和Axios一起工作,我希望你在某个地方设置了no-cors模式。

 类似资料:
  • Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 一、背景介绍 服务端基于 Spring Boot 和 Spring Cloud 开发,打包后可以直接运行,不需要额外安装 Tomcat 等应用容器。 Java 客户端不依赖任何框架,能

  • 我是新的Android Studio,想写一个小的示例应用程序与GraphQL和阿波罗客户端。 我已经成功地设置了我的构建环境和自动代码生成。下面是文件结构的屏幕截图,构建/生成/apollo/AllPostsQuery是基于自动生成的类: 我现在唯一的问题是我不知道如何将类导入我的

  • 我有一个wsdl: 我想提交信息以获得回应。我创建了client.php如下: 但它在浏览器中显示错误: SoapFault对象([消息:受保护]= 我错在哪里?对此,可能的解决方案是什么? 编辑: 我已经创建了一个php文件:client。php 但它产生了这个错误: 调用错误:响应不是文本/xml类型:应用程序/wsdl xmlHTTP/1.1 200确定日期:星期二,9月17日2013 15

  • 我正试图通过hbc-twitter4j-v3获得推文。示例代码为:https://github.com/twitter/hbc/blob/master/hbc-example/src/main/java/com/twitter/hbc/example/Twitter4jSampleStreamExample.java为了在代理上启用身份验证,我还设置了主机、端口和身份验证的系统属性。但它显示出以下

  • 我使用Wildfly Swarm generator创建了一个演示应用程序,我想在其中添加MicroProfile Rest客户端。 我只是添加了依赖项: 并调用RestClient实例化代码: 即使我不添加上面的行,只添加依赖项,我的应用程序也会出现依赖项错误。如果执行 我想知道我是不是忘记了一些依赖?或者我的代码有错误。 我的代码可以在这个存储库中找到。 我知道它不会成功,因为用户模型之间存在

  • 我有以下奥赛罗(reversi)游戏的阿尔法-贝塔极小值的实现。不知怎的,这永远不会返回正确的行动。它似乎返回了我在函数(0,0)中设置的默认操作和第二个值-32768,这意味着它在MAX子例程中被删减了。关于我可以改进什么以及如何解决这个问题,有什么建议吗? 注意:我已经确定了大部分正确返回的继任者。目前的最大深度是8。电脑玩家的pn(玩家数量)是1,人类玩家的是0。第一阶段,0,是MINIMA