我遇到重定向问题。我有一个小的 nodejs / express 应用,在提交表单后应该使用表单的输入值重定向到外部网址。
的index.html
<form method="POST" action="https://192.0.2.1/abc.html">
<input name="name"/>
<input name="email"/>
<button type="submit">
</form>
只有https://192.0.2.1/abc.html
没有输入才能进入&#39;值。请帮忙。
答案 0 :(得分:1)
我写了一个你正在描述的实例:
'use strict';
var host = '127.0.0.1', port = 3333;
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.get('/', (req, res) => {
res.type('html').end(`
<form method="POST" action="http://${host}:${port}/abc.html">
<input name="name"/>
<input name="email"/>
<button type="submit">Submit</button>
</form>
<form method="POST" action="http://${host}:${port}/def.html">
<input name="name"/>
<input name="email"/>
<button type="submit">Submit</button>
</form>
`);
});
app.post('/abc.html', (req, res) => {
var name = req.body.name, email = req.body.email;
res.redirect(`http://${host}:${port}/ghi.html?name=${name}&email=${email}`);
});
app.post('/def.html', (req, res) => {
res.type('html').end(`
<p>Name: ${req.body.name}</p>
<p>Email: ${req.body.email}</p>
`);
});
app.get('/ghi.html', (req, res) => {
res.type('html').end(`
<p>Name: ${req.query.name}</p>
<p>Email: ${req.query.email}</p>
`);
});
app.listen(port, () =>
console.log(`Listening on http://${host}:${port}/`));
您需要安装express
和body-parser
:
npm install express body-parser
运行:
node app.js
第一个表单通过POST方法正确传递参数。 POST /abc.html
处理程序可以访问它们并将重定向发送到表单的自定义URL:/ghi.html?name=xxx&email=yyy
- 重定向的目标以HTML格式显示这些值,您也可以在地址栏中看到它们
第二种形式不会重定向,但会直接显示参数,以便您可以更好地了解正在进行的操作。在浏览器中打开Developer Console并在单击表单按钮时观察网络活动也很有用。
从您的示例中不完全清楚您的代码中可能出现的错误,但我希望向您展示一个有效的示例代码,以帮助您诊断实施中的问题。
您必须记住的是,对于在查询字符串中传递参数的GET请求,您可以将其作为:
进行访问req.query.name
req.query.email
对于在请求正文中传递参数的POST请求,您必须使用body-parser
中间件,然后您可以使用以下命令访问它们:
req.body.name
req.body.email
此处发出的请求是:
aaa
作为姓名,bbb
发送电子邮件并提交第一份表单/abc.html
发送POST请求,并且正文中包含name=aaa&email=bbb
302 Found
标题Location: http://127.0.0.1:3333/ghi.html?name=aaa&email=bbb
响应
/ghi.html?name=aaa&email=bbb
200 OK
响应
醇>