试图让 ajax 工作在 Phoenix 上。我通过执行以下操作来获取 csrf 令牌,这样我就拥有了它:
<input type="hidden" id="_csrf_token" name="_csrf_token" value="<%= get_csrf_token() %>">
然后像这样使用它:
$.ajax({
type: "POST",
url: "<%= lesson_path @conn, :create %>",
beforeSend: function(xhr)
{
token = $('#_csrf_token').val();
xhr.setRequestHeader('_csrf_token', token );
},
data: data,
success: function(data, textStatus, jqXHR) {
alert(textStatus);
}
});
问题是我得到的令牌不是正确的令牌。查看 google chrome 检查器,我收到请求 403,表示存在无效的 csrf 令牌。有效的会话令牌始终与它给我的令牌不同。得到这样的东西IiJndz5FeV9MMhIKMzggUTtmHUALAAAAkJ/6Yr/k4BxdiKmiaMUqsw==
它通常想要这样的东西hHAg7V4xpjnZsM8Z+H1xw==
知道为什么我会得到与它想要的不同的令牌吗?
我也尝试过以下方法:
Plug.Conn.get_session(conn, :csrf_token)
Map.get(conn.req_cookies, "_csrf_token")
两者都不会返回任何内容。
令牌可以由请求通过带有键“_csrf_token”的参数或带有名称“x-csrf-token”的标头发送。
尝试使用 key 设置标题:
x-csrf-token
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)