【发布时间】:2025-12-16 14:20:03
【问题描述】:
我一直在搜索和搜索,包括这里的许多主题,以解决我的问题。到目前为止,我没有运气。 一点背景故事:我正在编写一个以 Drupal 7 作为后端的 AngularJS 应用程序。我可以毫无问题地登录,保存会话名称和会话 ID,并将它们放在一起作为 Cookie 标头 (I had to use this "hack")。此外,如果我在 Postman 应用程序中进行登录调用,然后尝试更新节点,它会起作用。这让我觉得是会话身份验证有问题,但我还是想不通。
话虽如此,我遇到了障碍。每当我尝试 PUT 更新节点时,都会收到以下错误:
401 (Unauthorized : CSRF validation failed)
现在,我的 ajax 调用如下所示:
$http({
method: 'PUT',
url: CONSTANTS.SITE_URL+"/update/node/"+target_nid,
headers:{
'Content-Type': CONSTANTS.CONTENT_TYPE,
'Authentication': CONSTANTS.SESS_NAME +"="+CONSTANTS.SESS_ID,
'X-CSRF-Token' : CONSTANTS.TOKEN
},
data: {
(JSON stuff)
}
})
CONTENT_TYPE 是“application/json”,“Authentication”是 Cookie 标头问题的创可贴,“X-CSRF-Token”是(大概)给我带来问题的原因。 SESS_NAME、SESS_ID 和 TOKEN 都是从 Login 处的响应中收集的。我可以拉取网站上用户制作的列表,我也可以拉取网站上某种类型的所有节点的列表。我只在尝试 PUT 更新节点时遇到问题。
如果我遗漏了任何信息,请告诉我,我会补充!
编辑:我使用的是 AngularJS 1.5.3 版。
【问题讨论】: