【发布时间】:2018-04-10 12:09:56
【问题描述】:
试图让 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")
两者都不会返回任何内容。
【问题讨论】:
标签: elixir csrf phoenix-framework