Express curl:从post路由重定向到get路由
我有一个express应用程序,我希望能够将post请求重定向到get请求 以下是应用程序:Express curl:从post路由重定向到get路由,express,curl,Express,Curl,我有一个express应用程序,我希望能够将post请求重定向到get请求 以下是应用程序: const express = require('express'); const app = express(); app.get('/get-route', function(req, res, next){ res.redirect('/'); }); app.post('/post-route', function(req, res, next){ res.redirect
const express = require('express');
const app = express();
app.get('/get-route', function(req, res, next){
res.redirect('/');
});
app.post('/post-route', function(req, res, next){
res.redirect('/');
});
app.get('/', function(req, res, next){
res.send('Home Page!\n');
});
app.listen(3001);
下面是我对curl的结果:
steve@Dell ~ $ curl http://localhost:3001/
Home Page!
steve@Dell ~ $ curl -L http://localhost:3001/get-route
Home Page!
在下面的curl请求中,它说它正在重定向到/但我不明白为什么它不显示主页代码>消息
steve@Dell ~ $ curl -X POST http://localhost:3001/post-route
Found. Redirecting to /
我认为-L选项可能有效,但这会产生一个错误:
steve@Dell ~ $ curl -L -X POST http://localhost:3001/post-route
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /</pre>
</body>
</html>
如果可能的话,我仍然希望能够使用curl来实现这一点。因此,在上面的原始代码中,您没有指定从post重定向到get路由的状态代码。Express将发送默认状态代码302,这意味着浏览器将返回新位置“/”和get方法。一切都应该很好
除了使用curl的-X选项时,您无意中告诉curl使用指定的原始方法向该路由发出所有请求(包括重定向)
因此,curl返回重定向位置和正确的方法,但随后尝试按照您的指令发布到GET路由。使用-X选项是一种针对具有特定解决方案的问题的通用强制解决方案
正如下面的链接中所回答的,在这种情况下,您需要使用curl的-d选项,因为这是使用curl发送POST请求的预期方法之一
TLDR:curl-L-d POSThttp://localhost:3001/post-路线
应该有效
steve@Dell ~ $ http --form --follow POST localhost:3001/post-route
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 11
Content-Type: text/html; charset=utf-8
Date: Sun, 27 Jan 2019 18:03:14 GMT
ETag: W/"b-OVE2GcFhwNv2PpVDFXfoBIbNry4"
X-Powered-By: Express
Home Page!