所以我使用express作为我的客户端应用程序的简单后端。当试图向下面的endpointGET /urls发出请求时,它不断收到此消息。
Access to fetch at 'http://localhost:5000/urls' from origin 'http://localhost:3000' has been
blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested
resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to
fetch the resource with CORS disabled.
我的快递服务器看起来像这样
require("dotenv/config");
const express = require("express");
var bodyParser = require("body-parser");
const app = express();
const cors = require("cors");
const mongoose = require("mongoose");
const ShortUrl = require("./modules/shortUrl");
var whitelist = ['http://localhost:3000']
var corsOptions = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
app.use(cors());
app.use(express.urlencoded({ extended: false }));
app.use(bodyParser.json());
mongoose
.connect(process.env.MONGO_DB_CONNECTIONSTRING, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log("\nConnected to Mongo Database\n"));
app.get("/urls", cors(corsOptions), async (req, res) => {
const shortUrls = await ShortUrl.find();
res.send({ serverBaseUrl: process.env.SERVER_BASE_URL, shortUrls });
});
app.post("/url", cors(corsOptions), async (req, res) => {
console.log(req.body);
await ShortUrl.create({ full: req.body.fullUrl });
res.send();
});
app.get("/:shortUrl", cors(corsOptions), async (req, res) => {
const url = await ShortUrl.findOne({ short: req.params.shortUrl });
if (url === null) return res.sendStatus(404);
url.clicks++;
await url.save();
res.redirect(url.full);
});
app.listen(process.env.PORT || 5000);
在我的Web应用程序中,我使用的是一个提取器,我快速输入,因此它可能是其中不太正确的东西。
const createFetchOptions = (method, body = undefined) => {
const options = {
method,
headers: {}
};
if (body && body instanceof FormData) {
options.body = body;
} else if (body) {
options.headers["Content-type"] = "application/json";
options.body = JSON.stringify(body);
}
return options;
};
const Fetcher = {
get: async url => {
const res = await fetch(url, createFetchOptions("GET"));
return res;
},
post: async (url, body) => {
const res = await fetch(url, createFetchOptions("POST", body));
return res;
}
};
export default Fetcher;
这是我的软件包的副本,json以防万一它的待办事项与版本问题
{
"name": "url_shortner",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"ejs": "^3.0.1",
"express": "^4.17.1",
"mongoose": "^5.9.4",
"shortid": "^2.2.15"
},
"devDependencies": {
"nodemon": "^2.0.2"
}
}
任何帮助将不胜感激,克里斯。
当您使用app.use(cors());
时,它会成为所有请求的中间件。因此,您不需要手动将其添加到您的路由中。如果您想为所有路由列出一个特定的域,那么您可以使用源
选项(我将其设置为流程字符串变量,以便更灵活地用于开发
和生产
环境):
const { CLIENT } = process.env;
app.use(
cors({
origin: CLIENT, // "http://localhost:3000" for dev and "https://example.com" for production
})
);
我的目标是用过滤器截获ServletResponse,并在其显示在网页上之前向其添加一些自定义html。我还想做一些计算,并将结果添加到会话变量HashMap中,以便在后续调用中访问。 我不知道如何从doFilter方法中的ServletRequest获取会话。这是我的代码: getSession的行抛出 JAVAlang.IllegalStateException:在提交响应后无法创建会话 如果
我有一个问题,由于安全原因,我无法发布完整的代码(抱歉)。我的问题的要点是我有一个服务器引导,创建如下: createMyHandlerMethod()基本上返回了< code > ChannelInboundHandlerAdapter 的扩展实现 我还有一个“客户端”侦听器,它侦听传入的连接请求,并按如下方式加载: 其中MyClientHandler又是ChannelInboundHandle
这是我第一次体验提升::property_tree我找不到一种方法来重现从留档(如何访问属性树中的数据)之后的树中获取值的方法。这是我为尝试属性树而编写的简单代码: 这是输出: 如<code>树所示。get_value(“whather”)在树中不返回值。get_value(“null”)不引发异常,并且<code>get_optional 我的环境是:
我试图分块读取输入流并写入文件以避免内存问题,我接收json格式的数据,并使用以下代码写入文件。 我的问题是,大多数json都写得很好,虽然其中一些包含损坏的数据,但我不确定我是否正确地将CharBuffer与BufferedReader一起使用,我观察到的另一件事是,对于少量数据,它正确地将CharBuffer写入文件,当我从服务器接收到更大的数据(大约2MB的输入流-不是很大)时,我通常会遇到
我们有自定义密钥类型的ignite缓存,即带有属性的Person key、人名和人姓以及自定义值类型的Person Info、带有属性的Person Address和Person Age等。这些类是在Java中定义的,缓存是在Bean文件中配置的,并使用CacheJDBCPOJO Store加载的。 由于这些类在节点js中不可用,我们如何使用cahe.put/cache.get.从节点js加载/提
我正在创建一个JavaFX应用程序,我已经很好地连接到了数据库。然而,当我从表中获取数据时,我得到了一个错误 组织。h2.jdbc。JdbcSQLException:未找到表“touch”;SQL语句:从讲座[42102-192]中选择名称 我100%确定我连接到数据库并且表肯定在那里,对为什么会这样有任何建议吗? hear是我的连接代码和我正在运行的代码,以便您可以看到 和正在运行的查询