【发布时间】:2015-11-25 14:13:10
【问题描述】:
我正在通过我的 AppController 中加载 Csrf 组件发出 ajax 请求
但是我收到错误{"message":"CSRF token mismatch.","url":"\/module_slides\/loadDeck.json","code":403}
这里是请求头
POST /module_slides/loadDeck.json HTTP/1.1
Host: www.hotelieracademy.com
Connection: keep-alive
Content-Length: 18
Origin: https://www.hotelieracademy.com
X-XSRF-TOKEN: 3d3901b1de9c5182dce2877c9e1d9db36cdf46a6
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
Referer: https://www.hotelieracademy.com/courses_employees/player/70
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: csrfToken=3d3901b1de9c5182dce2877c9e1d9db36cdf46a6; CAKEPHP=3n6lpi94hrdgsg8mv4fsnp1m30; _ga=GA1.2.2010364689.1424741587
我的 ajax 代码
$.ajax({
url: '/module_slides/loadDeck.json',
type: 'POST',
headers: { 'X-XSRF-TOKEN' : this.csrfToken },
beforeSend: function (xhr) {
xhr.setRequestHeader('X-CSRF-Token', this.csrfToken);
},
dataType: 'json',
data: {
我已经按照另一篇帖子的建议留下了beforeSend:,但似乎没有改变标题,所以我添加了headers:
我使用隐藏输入来获取要在我的 js 代码中使用的 CsfR 令牌
<input id="csrfToken" type="hidden" value="<?= $this->request->getParam('_csrfToken') ?>">
【问题讨论】:
-
XSRF?只是这个例子中的一个错字? -
我一定是雪盲症,谢谢
标签: ajax cakephp-3.0 csrf