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 配置。
添加回答
舉報