我正在尝试从我的nodejs/express 服务器获取文件“xxx.html”的内容。 但每当我尝试使用 Javascript fetch 获取文件时:
const response = await fetch(url);
const data = await response.text();
我收到 CORS 错误:
“从源“https://docproeller.de”获取“https://rez-dev.workbest.de/rezept_camera_grid.html”的访问已被 CORS 策略阻止:无“Access-Control-Allow-Origin” ' 标头存在于请求的资源上。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。”
我已经花了几个小时阅读有关cors的文章,但找不到这个问题的原因。 现在我在网上找到了一个“cors-tester”。
结果:
cors 方法 GET 请求不起作用 https://cors-test.codehappy.dev/?url=https%3A%2F%2Frez-dev.workbest.de%2F&origin=https%3A%2F%2Fcors-test.codehappy.dev%2F&method=get
cors 请求方法为 POST WORKS https://cors-test.codehappy.dev/?url=https%3A%2F%2Frez-dev.workbest.de%2F&origin=https%3A%2F%2Fcors-test.codehappy.dev%2F&method=post
非常欢迎每一个帮助或提示。
服务器:
const express = require("express");
const https = require("https");
const http = require("http");
const cors = require("cors");
// Use static files
app.use(express.static('public'));
// Use json- and url-encoding
app.use(express.json());
app.use(express.urlencoded({extended:true}));
// Use CORS
// Allow all Origins
app.use(cors());
https_port=443;
sslServer = https.createServer({
key: fs.readFileSync(path.join(ssl_server_key)),
cert: fs.readFileSync(path.join(ssl_server_cert))
}, app);
sslServer.listen(https_port, () => console.log("Secure Server is listening on port " + sslServer.address().port));
阿纳托利和其他一些消息来源的评论让我找到了正确的方向。解决方案实际上是将命令行移到更高的位置:
// Init app
const app = express();
// Use CORS
// Allow all Origins
app.use(cors());