我正在尝试使用 base64 从本地上传图像进行图像检测。
在本地和Postman中一切都正常。
但是在部署后,我遇到了CROS错误。
我已经在 server.js
中添加了cors中间件。
const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");
const app = express();
app.use(cors());
app.use(bodyParser.json({ limit: "10000kb", extended: true }));
app.use(bodyParser.urlencoded({ limit: "10000kb", extended: true }));
当使用URL获取图像时, cors
中间件正常工作。但是,当我试图通过使用base64
从本地上传图像时,控制台显示:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
以下是我尝试的解决方案:
cors-anywhere
App.js
const proxyUrl = 'https://cors-anywhere.herokuapp.com/';
fetch(proxyUrl + API_CALL.IMAGE_URL, {
method: 'post',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
inputLink: inputLink,
inputMethod: inputMethod
}),
credentials: 'include'
})
接下来会显示 413 payload too large
错误。
由于在本地测试和使用 Postman 时没有出现错误,我发现一些文章称这可能仍然是 CORS 错误。
- CORS 预检请求
server.js
const corsOptions = {
origin: 'https://front-end-url/',
methods: 'GET, POST, PUT',
credentials: true,
allowedHeaders: 'Content-Type,Authorization',
exposedHeaders: 'Content-Range,X-Content- Range'
};
app.options('/imageUrl', cors(corsOptions));
显示错误:
CORS policy: Response to preflight request doesn't pass access control check:
The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*'
when the request's credentials mode is 'include'
- 我移除了
credentials: 'include'
后,又出现了413 payload too large
。
我很困惑... 有人知道怎么解决吗?谢谢。