gpt4 book ai didi

facebook - express.static 无法响应 POST 请求

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:59 24 4
gpt4 key购买 nike

我有一个新手问题。我有一个 flash facebook 应用程序,它使用 facebook 积分。我使用 express 框架为我的静态 html 文件提供服务,其中包含 application.swf。

这就是我配置 express 的方式:

var app = express();

app.configure(function(){
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.logger());
app.use(app.router);

// Redirections for default pages
app.all("/", function(req, res) { res.redirect("/index.html"); });
app.all("/facebook", function(req, res) { res.redirect("/facebook/index.html"); });

// Serve static files
app.all("*", express.static('/my/static/files/directory'));
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});

require('http').createServer(app).listen(80);
require('https').createServer({
key: fs.readFileSync('./certs/www.app.org/www.app.org.key'),
cert: fs.readFileSync('./certs/www.app.org/www_app_org.crt'),
ca: fs.readFileSync('./certs/www.app.org/www_app_org.ca-bundle'),
}, app).listen(443);

我使用此结构为我的应用程序提供 http 和 https 请求服务。当传入的 http 请求类型为 GET 时,它运行良好。

但是,当用户在应用程序中购买商品时,Facebook 会向我的应用程序发送 POST 请求。问题是当收到对静态文件目录的 POST 请求时,express 会抛出 404 错误。

附言: POST 请求被发送到同一个 url,这对 GET 请求非常有效。

监控结果如下:

node_local:httpserver 88.250.59.159 - - [Fri, 17 Aug 2012 11:51:09 GMT] "POST /facebook/index.html HTTP/1.1" 404 - "-" "Apache-HttpClient/4.1.3 (java 1.5)"

node_local:httpserver 88.250.59.159 - - [Fri, 17 Aug 2012 11:50:59 GMT] "GET /facebook/index.html HTTP/1.1" 200 5892 "-" "Apache-HttpClient/4.1.3 (java 1.5)"

最佳答案

静态中间件是否使用all并不重要,它会对请求类型执行路由器独立检查,看它是POST还是HEAD。所以,不要在 app.all 中使用它,只需放在 app.use 调用中即可。它应该在应用程序堆栈中,而不是路由器中。

您可以在请求进入静态中间件之前拦截请求,只需在静态之前添加另一个中间件,这样就足够了:

app.post("/facebook/index.html", function(req, res, next) {
req.method = "GET";
next();
});

虽然我没有测试这个。

关于facebook - express.static 无法响应 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12005442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com