我有一个 create-react-app 应用程序,在其中通过添加以下内容来启用代理:
"proxy": "http://localhost:3001",
到我的 package.json。这对于对 /graphql 的 API 请求效果很好,但是当 Web 浏览器请求 /graphql (为了加载 UI 来运行查询)时,它会由前端处理而不是被代理。是否也可以代理它?
当我尝试通过访问进行 OAuth 时,也会发生同样的情况https://localhost:3000/auth/facebook,前端而不是后端处理它。
确实可以进一步定制代理。
首先,当网络浏览器请求/graphql
or /auth/facebook
,它发送一个Accept
包含的标头text/html
(除其他外)。 CRA代理的配置具体来说ignores具有此标头值的请求:
开发服务器将only尝试将 Accept 标头中没有 text/html 的请求发送到代理。
(原文强调)
幸运的是,您可以覆盖默认配置,并基本上根据您的喜好挂钩代理中间件。文档中有详细说明更是如此npm 包文档,但其关键在于:
app.use(
'/graphql',
createProxyMiddleware({
target: 'http://localhost:3001',
changeOrigin: true,
})
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)