reactjs - 如何在 reactjs 中使用第三方 Web 服务?
问题描述
我正在尝试使用第三方 api 的 ReactJs。当我在邮递员中测试 api 时,所有 api 都工作正常。但是当我将 api 集成到我的项目中时,我收到了 CORS 错误。我在谷歌上搜索过。我找到了使用代理服务器的解决方案。我尝试使用代理服务器,但仍然无法为我工作。可能是我没有正确实现它。我提到了这些链接:
https://daveceddia.com/access-control-allow-origin-cors-errors-in-react-express/
https://levelup.gitconnected.com/overview-of-proxy-server-and-how-we-use-them-in-react-bf67c062b929
我需要安装什么吗?任何帮助表示赞赏。
包.json
{
"name": "WebPortal",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server --port 8081 --hot --host localhost",
"build": "webpack --mode production"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@material-ui/core": "^4.9.0",
"@mdi/font": "^4.9.95",
"babel-loader": "^7.1.5",
"bootstrap": "^4.4.1",
"bootstrap4-toggle": "^3.6.1",
"jquery": "^3.4.1",
"pm2": "^4.2.3",
"popper.js": "^1.16.1",
"react": "^16.12.0",
"react-bootstrap-toggle": "^2.3.2",
"react-datetime-picker": "^2.9.0",
"react-dom": "^16.12.0",
"react-easy-crop": "^2.0.1",
"react-image-crop": "^8.5.0",
"react-loader-spinner": "^3.1.5",
"react-router-dom": "^5.1.2",
"react-toasts": "^3.0.6",
"webpack-cli": "^3.3.10",
"webpack-dev-server": "^3.10.1"
},
"devDependencies": {
"@babel/core": "^7.4.3",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/preset-env": "^7.4.3",
"@babel/preset-react": "^7.0.0",
"babel-core": "^7.0.0-bridge.0",
"babel-loader": "^8.0.5",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"css-loader": "^3.4.2",
"file-loader": "^5.0.2",
"html-webpack-plugin": "^3.2.0",
"style-loader": "^1.1.3",
"webpack": "^4.30.0"
},
"proxy": "api.sysco.com"
}
temp.js
fetch('/token?grant_type=client_credentials', {method: 'POST'}).then(
data => {
console.log("data==========>", data);
},
error => {
console.log("error==========>", error);
}
);
解决方案
如果您想要一种用于开发目的的方法(因为某些 api 不允许添加 localhost 或 http 以允许来源),您可以使用浏览器的 cors 禁用模式,例如 chrome
google-chrome --disable-web-security
就可以了,或者在 Windows 中您可以创建一个快捷方式(右键单击 > 发送到桌面)并在其属性中(右键单击 > 属性)--disable-web-security
在 ***/chrome.exe 之后添加标志(您将看到一个文本框)。
如果您想要生产解决方案,除了为您的网站配置 api 之外别无他法。您可以点击 Dominic 提供的链接了解更多关于 cors 的信息。所有第三方API使用都允许任何原始标头或至少提供一种在控制台中配置 cors 的方法。
推荐阅读
- vue.js - 当用户仍在输入字段值时触发Vuelidate验证,即使使用惰性
- mysql - 将 docker MySql 连接到 localhost mysql
- unity3d - OnTriggerExit 与 TerrainCollider 的碰撞
- python - 如何使用 pytesseract 对低质量的代码图片进行 OCR
- c# - 如何在 C# 中正确设置标题范围(使用 EPPlus)?
- ip - 如何查明IP地址的地理位置?
- javascript - 禁用 allowReorder 直到文件被处理
- c# - 从大型 Telegram 频道获取完整用户列表总是产生 200 个用户
- karate - 将 json 的每个值与正则表达式和逻辑运算符匹配
- css - 如何在 Vuetify 中删除 v-tab 过渡幻灯片?