嗨,我正在閱讀 Greg Lims 的關于 Node.js、express 和 mongodb 的書,當使用表單將資料發送到路由時,我被困在了這一點上,然后該路由將控制臺輸出 body.title 的形式。我得到狀態 404 Not Found。推薦人 Policystrict-origin-when-cross-origin。我需要有關 CSP 和 CORS 的教育,但不知道從哪里開始?
我的 index.js 和 form.html ...
const express = require('express')
const bodyParser = require('body-parser');
const app = new express()
const cors = require('cors');
app.use(express.static('public'))
const path = require('path');
const { header } = require('express/lib/request');
app.use(express.static(__dirname '/public'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(cors({
origin: "*",
})
);
app.use((req, res, next) => {
res.append('Access-Control-Allow-Origin', ['*']);
res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.append('Access-Control-Allow-Headers', 'Content-Type');
next();
});
app.listen(4000,()=>{
console.log('App listening on port 4000')
})
app.get('/',(req,res)=>{
console.log('get root')
res.sendFile(path.resolve(__dirname,('pages/index.html')))
})
app.get('/about.html',(req,res)=>{
console.log('get about')
res.sendFile(path.resolve(__dirname,('pages/about.html')))
})
app.get('/post.html',(req,res)=>{
console.log('get post')
res.sendFile(path.resolve(__dirname,('pages/post.html')))
})
app.get('/store',(req,res)=>{
res.set("Content-Security-Policy", "default-src 'self', form-action 'self',script-src 'self'");
console.log('store post')
console.log(req)
console.log(req.body)
console.log(req.body.title)
res.redirect('/')
})
my form
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self', form-action 'self',script-src 'self'">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Create</title>
</head>
<body>
<H1>Create Page</H1>
<form action="/store" method="POST">
<div >
<div >
<label>Title</label> <input type="text" placeholder="Title" id="title" name=”title” >
</div>
</div>
</div>
<br>
<div > <button type="submit" id="sendMessageButton">Send</button>
</div>
</form>
</div>
</div>
</div>
<meta http-equiv="Content-Security-Policy" content="default-src 'http://localhost'">
<!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> -->
<hr>
</body>
</html>
...
uj5u.com熱心網友回復:
您的示例中沒有 POST 端點,它們都是GET. 據我所知,您<form />真正想要的是 POST 到store. 如果是這種情況,請更換此位
app.get('/store',(req,res)=>{
res.set("Content-Security-Policy", "default-src 'self', form-action 'self',script-src 'self'");
console.log('store post')
console.log(req)
console.log(req.body)
console.log(req.body.title)
res.redirect('/')
})
對于這一點。請注意,我只更改了 HTTP 動詞。
app.post('/store',(req,res)=>{
res.set("Content-Security-Policy", "default-src 'self', form-action 'self',script-src 'self'");
console.log('store post')
console.log(req)
console.log(req.body)
console.log(req.body.title)
res.redirect('/')
})
請閱讀Express 上基本路由的官方檔案。這應該會給你一些見解。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/408025.html
標籤:
