Ela*_*ine 12 cors graphql create-react-app react-apollo apollo-client
我在 StackOverflow 上到处搜索,看到了类似的问题,但没有找到有效的解决方案。想知道是否有人有有效的解决方案?我正在 localhost:3000 上开发一个 create react 应用程序,并尝试通过我的 Apollo Client 访问另一个站点上的 URI(我正在使用https://developer.github.com/v4/explorer/进行测试)。
我已将 'no-cors' 的 fetchOptions 模式添加到我的新 ApolloClient 实例中,但我的控制台中仍然出现 CORS 错误。我的整个 index.js 文件如下:
import React from 'react';
import ReactDOM from 'react-dom';
import { ApolloProvider } from 'react-apollo';
import { ApolloClient, HttpLink, InMemoryCache } from 'apollo-boost';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
const client = new ApolloClient({
link: new HttpLink({ uri: 'https://developer.github.com/v4/explorer/' }),
fetchOptions: {
mode: 'no-cors',
},
cache: new InMemoryCache()
});
const AppWithProvider = () => (
<ApolloProvider client={client}>
<App />
</ApolloProvider>
);
ReactDOM.render(<AppWithProvider />, document.getElementById('root'));
serviceWorker.unregister();
Run Code Online (Sandbox Code Playgroud)
控制台中的错误消息:从源“ http://localhost:3000 ”获取“ https://developer.github.com/v4/explorer/ ”的访问权限已被 CORS 策略阻止:对预检请求的响应没有通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
由于 API 端点的 Access-Control-Allow-Origin 中可能没有“localhost”,因此您必须在简单和干净的解决方案之间进行选择。
简单的解决方案:如果只是出于开发目的,您可以考虑使用--disable-web-security设置的标志来启动 Chrome。然而,由于这大大降低了安全性,因此它应该只是出于开发目的的临时解决方案。
干净的解决方案:如果 API 端点没有Access-Control-Allow-Origin: '*',则没有真正的方法可以完全使用浏览器中的数据。考虑让应用程序的后端将请求发送到 API 端点,然后将结果提供给前端。
| 归档时间: |
|
| 查看次数: |
6378 次 |
| 最近记录: |