3 回答
TA贡献1887条经验 获得超5个赞
在节点 js API 中添加以下代码
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
或者
//allow OPTIONS on all resources
app.options('*', cors())
TA贡献1773条经验 获得超3个赞
您需要为 API 请求设置代理服务器 - https://create-react-app.dev/docs/proxying-api-requests-in-development/
我不完全了解 Elastic 服务器的详细信息,但您可以将 Express 代码放入src/server.js文件中,受https://stackoverflow.com/a/20539239/1176601 的启发:
var express = require('express')
var request = require('request')
var cors = require('cors')
var app = express()
app.use(cors())
app.use('/', function(req, res) {
var url = 'https://' +
req.get('host').replace('localhost:80', 'servername.domain:11121') +
req.url
req.pipe(request({ qs:req.query, uri: url })).pipe(res);
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})
更新 package.json
"scripts": {
...
"server": "node src/server.js"
},
"proxy": "http://localhost:80"
修改您的客户端:
let client = new elasticsearch.Client({
host: "{cred.user}:{cred.pass}@@localhost:80",
log: "trace",
});
并通过npm run server(之前或之后npm start,例如在单独的终端中)启动它。
在第一次开始之前,您需要安装所有required 模块,npm i -D express request cors.
TA贡献1818条经验 获得超11个赞
您应该将其添加到您配置正在使用的服务器的文件中。如果您使用的是 express,您会将其添加到您正在谈论的 server.js 文件中,但您似乎有一个 elasticsearch 服务器和一个 react 应用程序,因此您没有 node.js 后端。
您可能必须在弹性搜索服务器中包含一个 cors 配置。
添加回答
举报