2012-11-21 86 views
0

我正在使用Tower.js 0.4.2-20。无法获得POST回复

我发送了HTML FORM标记的GET和POST请求。
'GET'请求没有问题。 但'POST'请求返回以下错误。

我缺少路由器设置?

routes.coffee:

Tower.Route.draw -> 
    @resources 'service' 
    @match '/service/add', to: 'service#add', via: 'post' 

ServiceController.coffee:

class ServiceController extends App.ApplicationController 
    index: -> 
    @render text: "GET" 
    create: -> 
    @render text: "POST" 
    add: -> 
    @render text: "ADD" 

的index.html:

<form method='POST' action='service/add'> 
    <div><input type='submit' value='Add'></div> 
</form> 

错误:

Error: Forbidden 
at Object.exports.error (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/utils.js:44:13) 
at Object.module.exports [as handle] (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/middleware/csrf.js:54:41) 
at next (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/proto.js:190:15) 
at multipart (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/middleware/multipart.js:57:27) 
at module.exports (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:57:9) 
at IncomingMessage.module.exports (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:68:11) 
at IncomingMessage.EventEmitter.emit (events.js:115:20) 
at Object.resume (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/node_modules/pause/index.js:25:18) 
at store.get.next (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/middleware/session.js:311:15) 
at /var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/middleware/session.js:333:9 
+0

错误并不重要。我们需要帮助您的是节点应用程序代码 – toxicate20

+0

对不起。写入节点应用程序代码。 – YASAI

回答

6

第一次猜测:表单的相对URL是问题。将formaction属性更改为/service/add,看看是否有帮助。您收到的403禁止错误可能意味着POST请求将转到您期望的其他URL路径。例如,如果您的表单位于/pages/service,则表单将由于相对网址而提交至/pages/service/service/add

第二次猜测:啊。得到它了。

at Object.module.exports [as handle] (/var/www/html/melissa/manage/development/yoshiaki-tanaka/node_modules/tower/node_modules/express/node_modules/connect/lib/middleware/csrf.js:54:41) 

crsf模块可能是检查你的形式的跨站请求伪造令牌,这将需要一个<input type="hidden" name="crsf_token" value="YOUR_CRSF_TOKEN">标签的形式(或类似的东西)。阅读您正在使用的CRSF中间件的文档,了解如何创建包含CRSF标记的正确的<form>标记HTML。

+0

谢谢彼得里昂。 表单的动作属性更改为“添加”时,当前路径为“example.com/service”。

但发生同样的错误。 – YASAI