2

私は自分のアプリのどこかでばかげたエラーを犯したと確信していますが、それを見つけることができないようです。

これが私のExpressアプリの外観です。ルートを次のように設定しています。

var routes = require('./routes');
...
app.get('/', routes.index);
app.get('/embed', routes.embed);
app.post('/upload', routes.upload);

ルートフォルダには、2つのファイルがあります。index.jsファイルは、2つのリクエストハンドラー.indexとをエクスポートします.embed。ページ.embedで使用されるCSRFトークンを作成することを知っておくと役立つ場合があります。/embed

exports.embed = function(req, res){
  var csrf = req.session._csrf;
  res.render('embed', { token: csrf });
};


form#secret-form(name="secret-form", method="post", action="/upload", style="")
  input(type="hidden", name="_csrf", value="#{token}")
  input(type="hidden", name="image")
  input#send-button(type="submit") Upload

問題が発生している場合の簡単なメモ:.submitこのフォームにjQueryハンドラーをアタッチしました。このページのキャンバスオブジェクトからデータURLを取得し、それを「image」という名前の入力フィールドの値として入力するだけです。

ルート.uploadはroutes/upload.jsファイルで処理されます。これは次のようになります。

exports.upload = function(req, res) {
  console.log("Receiving upload...");
  var imageURL = req.body.image;
  // snippet of code that grabs a canvas data URL and stores it in a file
};

フォーム/uploadからのリクエストに対して次のログ出力が得られるため、この関数の内容は重要ではないと思います。/embed「アップロードを受信して​​います...」という行も印刷されません。「POST/アップロードできません」というページを返すだけです。

127.0.0.1 - - [Thu, 26 Jul 2012 04:07:41 GMT] "POST /upload HTTP/1.1" 404 - "http://0.0.0.0:3000/embed"

だから、私はここで何が間違っている可能性がありますか?それは私のアプリ構成ですか?CSRFサポートを追加した後、POSTリクエストが機能しなくなったため、そうなる可能性があります。しかし今、私はただ推測しています...

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  //app.use(express.limit('1mb'));
  app.use(express.query());
  app.use(express.logger());

  // CSRF stuff
  app.use(express.cookieParser());
  app.use(express.session({ secret: "secret", cookie: { maxAge: 60000 } }));
  app.use(express.csrf());

  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});
4

1 に答える 1

0

ファイルindex.jsは次のようになります。これにより、routes.upload実際には次のuploadエクスポートが参照されupload.jsます。

exports.upload = require('./upload').upload;

exports.index = function(...

exports.embed = function(...
于 2012-07-26T04:49:58.793 に答える