javascript - 如何在 create-react-app 中激活 CORS?
问题描述
我已经使用 create-react-app cli 创建了一个 React 应用程序。现在我使用外部库做一些请求。(我通过库我的 backendUrl 并执行请求)
localhost:3000
我的 ReactJS 应用程序(Webpack)localhost:8081
我的后端服务器
现在这会导致错误,说没有发送 Access-Control-Origin-Header。
所以我研究了如何使用 Webpack 激活它。我做了什么:
弹出 Webpack 配置以访问开发服务器属性:
npm run eject
在 webpack.config.js 中添加以下部分
devServer: { headers: { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept" }
} --> 什么也没做
然后我尝试使用代理机制:
"proxy": {
"/api": {
"target": "<put ip address>",
"changeOrigin" : true
}
}
但是由于我使用了一个不使用 fetch 并使用整个 URL 进行 API 调用的外部库,所以这也不起作用,因为据我了解,这仅代理请求fetch("api/items")
,例如。
我有点困惑,因为我在网上找不到任何东西。也许我把上面的东西放在错误的配置文件或行中?
还有一个 webpackDevServer.config.js 但我在网上找不到任何关于它的东西,一旦我向它添加一些东西,它就会产生错误。
解决方案
CORS 需要在服务器端打开,而不是在客户端。您可以下载 chrome 扩展程序以绕过 CORS,但这仅用于开发目的。
您获得 CORS 的原因是因为您从两个不同的起源跳到哪一个3000
。8181
根据您在后端使用的内容,有多种不同的方法可以启用 CORS。
在某些情况下,这实际上只是运行时的开发问题,它们都在同一个来源上运行。大多数事情将使您能够代理呼叫到该地点。例如,下面是 .NET SPA Services / Angular 7 的做法:
- 角度运行:4200
- .NET 运行于:5000
spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
https://docs.microsoft.com/en-us/aspnet/core/client-side/spa-services?view=aspnetcore-2.2
我不确定您在后端使用的是什么,所以如果您不使用 .NET,这里有一篇通用文章
推荐阅读
- visual-studio-code - VS 代码终端选项卡颜色
- python - 为什么这个列表元素会在列表中移回?
- java - Java Swing DrawRect:创建新维度替换旧维度
- mysql - 如何添加唯一标识 MySQL 表中列子集的标识符?
- php - 如何在 SQL 中使用 Unix 时间戳选择本周的数据?
- javascript - 在 JavaScript 中,如何根据格式 2001-08-22 03:04:05.000 格式化日期?
- java - 为什么池中的 HTTP 连接会变得陈旧?是否有关于如何计算驱逐政策的指南?
- swift - Swift Combine - 多个 Observable(CurrentValueSubject 或 PassthroughSubject)合二为一,但等待所有更新
- javascript - 制表器将多个表格合并到一个 pdf 中
- javascript - NuxtJs Axios 渲染问题未定义