javascript - Apollo 客户端发送 OPTIONS 而不是 GET HTTP 方法
问题描述
我无法理解 Apollo 客户端库,因为它无法按预期工作。它不是发送GET
HTTP 方法,而是发送OPTIONS
HTTP 方法,即使我只在从 GraphQL 服务器检索数据时使用GET也是如此。
const client = new ApolloClient({
link: ApolloLink.from([
new MeteorAccountsLink(),
new HttpLink({
uri: 'https://selo-comments.herokuapp.com/graphql',
useGETForQueries: true
})
]),
cache: new InMemoryCache()
});
来自浏览器的控制台日志:
OPTIONS https://selo-comments.herokuapp.com/graphql?query=%7B%0A%20%20comments(id%3A%20%22TFpQmhrDxQqHk2ryy%22)%20%7B%0A%20%20%20%20articleID%0A%20%20%20%20content%0A%20%20%20%20userId%0A%20%20%20%20createdAt%0A%20%20%20%20commentID%0A%20%20%20%20votes%0A%20%20%20%20blockedUsers%0A%20%20%20%20__typename%0A%20%20%7D%0A%7D%0A&variables=%7B%7D 405 (Method Not Allowed)
这显然意味着 HTTP 方法是不正确的,即使它在 url 中有查询参数。如果您使用 Postman 查询该 url,或者只是使用浏览器的地址栏导航到该 url,您将获得 GraphQL 数据。我必须使用https://cors-anywhere.herokuapp.com/
才能成功执行查询。
我究竟做错了什么?
解决方案
CORS 预检请求是检查是否理解 CORS 协议的 CORS 请求。这是一个 OPTIONS 请求,使用三个 HTTP 请求标头:Access-Control-Request-Method、Access-Control-Request-Headers 和 Origin 标头。
您可能需要配置您的服务器以允许跨源调用。
也许您可以在这里找到一些灵感来帮助您入门。允许对 Heroku 上的 Express/Node.js 应用程序的 CORS REST 请求
推荐阅读
- matlab - 从 RGB 计算 YCbCr 的结果错误
- php - PHP 'file_get_contents" 不显示换行符
- java - 在控制台中打印之前将 char 移向?
- python - Anaconda:升级到 2018.12 和 mkl 错误
- javascript - 箭头功能:我无法访问外部对象
- java - React Native Android Intent putExtra obj ReadableMap 如何恢复对象
- android - 每次更新都会下载 OBB 扩展文件,即使它没有改变?
- flask - 阿帕奇,ugswi,烧瓶,通信问题
- excel - 如何在选择更改时切换单元格颜色
- c# - 如何通过使用 DateTime 列和变量月、年的查询来填充包含记录的数组