异步请求

异步请求包含POST,ajax等多种请求方式,系统会自动进行异步验证(csrf)及处理

程序中响应方法和同步请求保持一致,返回$this->error()会自动和同步请求作区分,返回json数据

  1. // http://www.billge.cc/test/demo3
  2. public function action_demo3()
  3. {
  4. $ret = array('result'=>1);
  5. //返回 json {"flag": true, "ret": {"result": 1}}
  6. return $this->correct($ret);
  7.  
  8. //返回 json {"flag": false, "error": {"result": 1}}
  9. return $this->error($ret);
  10. }

框架提供了一整套csrf验证机制,默认开启,可通过在Action中将$csrfValidate = false关闭。

  1. // http://www.billge.cc/test/
  2. class testAction extends baseAction
  3. {
  4. //关闭csrf验证
  5. protected $csrfValidate = false;
  6.  
  7. //默认路由index
  8. public function action_index()
  9. {
  10. //返回 test/test.tpl.php
  11. return $this->correct();
  12. }
  13. }

当csrf验证开启时,前端ajax请求需要预先加载引用/static/js/main.js文件,ajax提交时,系统会自动加上验证字段。

POST请求同样也会触发csrf验证,需要在form中添加如下数据字段:

  1. // 加在form中提交
  2. <input type="text" name="_csrf" hidden value="<?=$this->getCsrfToken()?>"/>

同样也可以在js中获取(前提是引用/static/js/main.jsJS文件),加在POST参数中即可。

  1. var _csrf = getCookie('csrf-token');