在twig中,我生成一个csrf令牌({{csrf\u令牌('my\u intention')}}
)。
在Javascript中,我使用ajax调用控制器,实际上是使用fetchapi(也尝试了ajaxxmlhttprequest)、POST请求。包含请求中传递的令牌的参数名称为“token=abcdef…”。
阿贾克斯:
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function (data) {
console.log(data);
};
httpRequest.open('POST', el.getAttribute("data-url"));
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
httpRequest.send(.......);
获取API:
fetch(el.getAttribute('data-url'), {
method: 'post',
headers: {
"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
},
body: 'token=' + encodeURIComponent(el.getAttribute('data-token'))
}).then(data => data.text()).then(data => {...}
在名为的控制器操作中,我从POST请求中获取作为数据发送的令牌。我在控制器中检查令牌,如下所示:
$token = $request->request->get('token');
if (!$this->isCsrfTokenValid('my_intention', $token)) {
throw new InvalidCsrfTokenException("error csrf 2");
}
但是Symfony说令牌无效。
我不确定,但我认为令牌在会话变量中找不到。在isTokenValid()
$this-
在浏览器中,如果我直接调用网址,就可以了。
在twig中,我设置url以调用如下数据属性
dataURL=“{{path(''u check',{'id':transaction.id}}}}”
,然后我从javascript读取此数据属性并将其传递给ajax/fetch函数。
我用jQuery$尝试了ajax。post(…有效。唯一的区别是请求头中的Cookie:PHPSESSID…与原始代码中的jQuery不同。
我不明白,我的代码怎么了?
Symfony 3.1。3.
编辑:解决:我没有在标题请求中传递凭据,因此,Symfony无法找到会话并检查令牌:
fetch(el.getAttribute('data-url'), {
method: 'post',
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest"
},
body: 'token=' + el.getAttribute('data-token'),
credentials: 'include'
}).then(data => data.text()).then(data => {
即使你找到了问题的答案,我建议你看看这个包,它处理基于服务器端定义的Cookie的令牌验证,你应该传递每个异步请求。
https://github.com/dunglas/DunglasAngularCsrfBundle
问题内容: 我在Ubuntu16.04上将Symfony3与PhpStorm.2016.3.2一起使用 我之前从未做过AJAX请求,并且想测试从view->到controller->的控制器调用,该调用将答案发送回JSON中的视图。 所以我读了文档,但它们都很具体。因此,我的愿望是只能在视图中编写一个简单的AJAX请求,以便对其进行测试,调用控制器并在视图中返回答案。 这是我的看法: 我的控制器:
问题内容: 注意 :我粘贴的代码不仅仅是ajax调用,以免代码是(导致)问题的一部分。但是,我认为并不是这样,因此您最好将注意力集中在和功能上。 还要注意,由于对此问题有一个评论(带有否决权),说我的代码很难解密,所以我很乐意澄清需要澄清的内容,如果这可以证明是找到问题的关键。 谢谢。 就是这个 我正在尝试抛弃jQuery,因为我唯一使用的是方法,而包括jQuery之类的整个库仅具有一项功能就令I
我正在发送一些字符串,例如: via放心 不幸的是,API返回500。我通过邮递员发送相同的请求,它工作得很好。唯一的区别是“assings”部分。邮递员请求后,看起来像: 当“放心”请求后,它是空的: 添加了所有标头,我尝试将其作为从.json文件解析的字符串发送。一切都给出相同的结果。有人知道问题出在哪里?
问题内容: 我想知道如何一次获取多个GET URL,然后将获取的JSON数据放入我的React DOM元素中。 这是我的代码: 但是,我想从服务器中获取其他JSON数据,然后使用传递到其中的所有这些JSON数据呈现我的ReactDOM。例如: 这可能吗?如果不是,将多个JSON数据提取到我的渲染ReactDOM元素中的其他解决方案是什么? 问题答案: 您可以在解决方案之前依靠Promises来执行
只是为了学习目的,我使用处理程序将所有超文本传输协议请求记录到我的Web API 2应用程序。 这只是打印请求标头如下: 但是我也在POST正文中发送一个json对象,它没有打印。我想打印标题和正文。此外,我在调试时找不到任何东西在'HttpquiestMessage'对象。
购买了一款产品,使我们的用户能够通过HTTP发送/接收SMS。现在,我的工作是将其构建到我们当前的CMS平台中 以下是我试图发送的特定POST请求的文档:POST:发送SMS消息 这是我的简单python程序来测试功能。我得到一个通用的500内部服务器错误响应。我做错了什么?