2012-08-17 119 views
2

我有一個新手問題。我有一個Flash的Facebook應用程序,它使用Facebook信用。我使用express框架來服務我的靜態html文件,其中包含application.swf。express.static無法響應POST請求

這是我如何配置快遞:

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時,它工作正常。

但是,當用戶在應用程序中購買物品時,臉書向我的應用程序發送POST請求。 問題是當接收POST請求到靜態文件目錄時,表達式拋出404錯誤。

P.S. :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)" 

回答

4

對於靜態中間件使用all無關緊要,它對請求類型執行路由器無關檢查以查看它是否爲POSTHEAD。所以,不要在app.all中使用它,只需放在app.use調用中即可。它應該位於應用程序堆棧中,而不是路由器。

它進入靜態中間件之前,你可以攔截該請求,就在靜態添加其他中間件,這樣的事情應該足夠了:

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

我沒有,雖然進行測試。

+1

完美合理,並且效果很好... – 2012-08-17 12:40:15

+0

我也測試過它,它工作的很棒。 – Nadjib 2014-08-14 21:59:17

0

我的工作就像一個項目,首先你必須檢查「實可以訪問您的服務器?」。這意味着您的服務器必須通過互聯網訪問端口80或8080。

+0

是的。我可以在臉書裏找到我的應用程序。所有的GET請求都可以工作。我可以使用我的應用程序沒有任何問題。 – 2012-08-17 12:15:44

+0

你也可以看看那個網頁[鏈接](http://clientexpressjs.com/examples/processing_url_and_post_parameters) – historyoftheviolence 2012-08-17 12:33:41