gpt4 book ai didi

javascript - 使用 Ajax 时 CSRF token 无效

转载 作者:行者123 更新时间:2023-12-03 03:28:24 30 4
gpt4 key购买 nike

我使用纯粹的 javascript 来访问使用 Spring 构建的某些 Web 服务。当我尝试使用 Ajax Post 调用其中一项服务时,我遇到了 CSRF 问题。

Ajax 调用是以下几行:

var data = {'attribute1':'1','attribute2':'2'};

$.ajax({
type: "POST",
url: url,
data: data,
success: function(data)
{
if (typeof inputId !== 'undefined') {
$("#"+inputId).val(JSON.stringify(data));
}
console.log(JSON.stringify(data));
}
});

我一直在网上搜索,但我发现的只是更新后端(JSP、PHP)以填充表单中的属性“${_csrf.parameterName}”。 但是,我没有使用任何后端,所有页面都是 HTML 和 javascript。

最佳答案

CSRF_Token 是由您的 Web 框架/服务器发送并存储在浏览器中的 cookie。通常,当您通过 ajax 调用发布时...您需要将该 CSRF_Token 值作为 JSON 数据的一部分发送。为此...您需要使用 JavaScript 来查找 cookie 名称并获取值。您需要将值分配给服务器期望看到的正确变量名称。例如,

var data = { crsf_token_name_server_expects: csrf_token_value_I_obtained };

CSRF_Token 用于确保与您的 api 通信的人员在尝试向网站发布数据之前确实访问了您的网站并创建了有效的 session 。 google.com 上的用户无法向 stackoverflow.com 发帖,除非 stackoverflow.com 设置了名为 cors header 的内容,该 header 允许 Google.com 和 Stackoverflow.com 之间进行通信。

根据您的问题...您说您正在发布到由 Java Spring 提供支持的后端 api。此 api 需要 csrf_token,因此听起来它是一个仅应用于设置此服务的域名的 api。例如,用户访问 google.com 并向 www.google.com/url_to_post_to/发送 POST。 Google 将确保随此请求发送 CSRF_Token...因为他们不希望人们在没有有效的 Google session 的情况下随机访问此 api url。

关于javascript - 使用 Ajax 时 CSRF token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46207374/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com