问题标签 [x-xsrf-token]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
216 浏览

angular - Angular http 拦截器,缺少 XSRF 令牌 - 保留或包装其他 htp 请求,直到 api-bootstrap(api 引导调用)请求完成

Angular 有时无法添加 XSRF 令牌,因此我们添加了拦截器做双重检查并在丢失时添加令牌。然后我们发现它有时无法读取 cookie,所以我们添加了 3rd 方库来读取 cookie.. 但是我们仍然面临第一次尝试时缺少 XSRF 令牌的 prod 错误,特别是当从另一个站点重定向到我们这边时,随后刷新页面工作正常。

我们的一个理论是 cookie 尚未设置,即在实际设置 cookie 之前运行 cookie 的角度读取的竞争条件。认为遇到此错误的流量很低,我们需要解决这些错误并减少客户的挫败感。

现在我们想将请求保持几毫秒然后读取 cookie,即使没有找到 cookie,我们也想执行第二次 /ws/bootstrap 调用。

我很难理解或想出这个拦截器中的代码。非常感谢任何建议或参考。

同时,我将尝试在评论中发布我修改后的代码,但到目前为止,这几乎是无效的代码。

0 投票
1 回答
383 浏览

php - Laravel Sanctum/React on LAMP Stack - 未经身份验证但存在 x-xsrf-token

我在 LAMP Stack 上使用 Laravel Sanctum。我有我的前端反应应用程序指向 /var/www/app.example.com和我的后端 Laravel 指向/var/www/appapi.example.com在同一台服务器上。两者都加载正常。

我目前正在构建本教程 - https://dev.to/dog_smile_factory/series/5857

如果你打开开发工具并遵循它的工作流程,你可以注册一个新用户,登录,然后它会自动尝试访问 api/users 路由——它总是返回unauthenticated.

即使一切都像我想象的那样敞开,我也没有通过 - 这就是我所拥有的:

CORS.php

.env

内核.php

api.php


在我的 React 应用上

所有 axios 请求看起来像这样(withCredentials = true):

};

x-xrfs-token 从我所知道的内容中正确保存并随每个请求一起传递。也许我对此有误解,这就是为什么我不能点击我的认证路线api/users

在几个教程、laravel 文档和搜索网络之后,我已经为此工作了 4 天——不知何故,我仍然遗漏了一些东西。大多数教程都在这样做localhost,我在 LAMP 堆栈上配置它。这是我看到的唯一一件不同的作品。我究竟做错了什么?

0 投票
1 回答
1291 浏览

http - 如何在赛普拉斯请求中访问不同域的 cookie?

作为赛普拉斯测试的一部分,我正在尝试使用cy.request. 身份验证请求需要包含 XSRF-TOKEN cookie 的值作为标头。这在与认证域相同的 baseURL 上很容易解决:访问域,通过 读取 cookie cy.getCookie,然后发出请求。由于 cypress 不允许在单个测试中访问多个域,因此需要不同的工作流程。

我现在的解决方案是cy.visit用 a替换初始值cy.reqeuest(这会将 cookie 设置为通过查看第二个请求的请求标头来验证)。但是,在发出第二次身份验证请求之前,我无法弄清楚如何读取此 cookie。cy.getCookies()是空的,document.cookie是空的。only的响应第cy.request一次包含“set-cookie”标头,我无法弄清楚如何读取cy.requestsince的默认标头cy.intercept不适用于cy.request.

我的尝试草图(在哪里c.valuenull

0 投票
0 回答
580 浏览

python - 如何在 Python 中使用 session.get 请求发回 XSRF 令牌?

我正在尝试在网站上搜索“Adrian”一词。我已经明白,首先我必须向网站发送一个请求,在响应中我将有一个 XSRF 令牌,我需要将它用于第二个请求。据我了解,如果我使用 session.get() 它也会自动为第二个请求保留 cookie。我运行第一个请求,得到 200 响应,我打印出 cookie,令牌就在那里。我运行第二个请求,我得到一个 400 错误,但是如果我打印出第二个请求的标头,则令牌就在那里。我不知道哪里出了问题。为什么我第二个得到400?

我还尝试跳过会话并在第二个请求中使用 requests.get() 并自己将令牌添加到标头,但结果是相同的:

0 投票
2 回答
198 浏览

c# - 我需要在 asp.net Core 中创建 XSRF 中间件吗?

我不确定是否必须将 xsrf 中间件附加到我的 ASP.NET Core REST Api 应用程序。我已经通过添加 UseCors() 中间件将我的应用程序管道配置为使用 cors,但仍然不明白这是否足够。

现在我正在同时使用AddAntiforgeryAddCors使用我自己的中间件UseXsrf和微软的UseCors.

0 投票
2 回答
454 浏览

angular - 如何在 Laravel 8 的 Angular 11 API 请求标头中设置 XSRF-TOKEN?

我集成Angular (11) frontendLaravel 8应用程序中。为了发出 API 请求,用户必须登录。每次前端 Angular 向后端 API 发出请求时,我都会收到以下错误:

我已经设置VueJs frontend测试相同的 API 端点 URL,VueJs 可以到达 API 端点并从后端获取响应。当我将Request HeadersVueJS 发出的 API 请求与 Angular 11 发出的请求进行比较时,我Request Headers发现Angular 11没有X-XSRF-TOKEN. 所以我认为这就是我收到上述错误的原因。

以下是在 Laravel 8 中如何设置VueJs以及如何在.AXIOSX-XSRF-TOKENAPI Request Headers

如何设置X-XSRF-TOKENor X-CSRF-TOKENin API Request Headersmaking by Angular 11inside Laravel 8

注意:Angular 11 前端和 VueJs 前端都集成在 Laravel 8 应用程序的前端网页上,因此它们在同一个域中。所以我认为laravel-cors不需要包。

0 投票
0 回答
206 浏览

php - 如何以编程方式登录 Cypress for PHP larvavel 会话网站

我在 Cypress 中编写测试代码。UI登录已经测试没有问题,但是为了测试网站的其他部分,我想以编程方式登录以进行快速测试。该网站是用 PHP 编写的,并在标头的 set-cookie 中使用 laravel 会话,下面是我的代码:

规格

命令.ts

索引.d.ts

任何帮助表示赞赏。谢谢!

0 投票
0 回答
33 浏览

blazor - 在 Linux CloudFoundary 上获取 _blazor/negotiate 禁止错误 403

在协商连接时,Blazor 服务器应用程序在发布时在 Linux CloudFoundary 服务器上引发禁止错误 403https://<url>/_blazor/negotiate?negotiateVersion=1

响应 [{"logref":"eae1ffae68f342bdb285e0caa3dc6265","message":"网关错误:在请求参数 '_csrf' 或标头 'X-XSRF-TOKEN' 上找到无效的 CSRF 令牌'null'。","stackTrace": ""}]

请让我知道如何添加X-XSRF-TOKEN标题。

0 投票
1 回答
92 浏览

angular - 基本身份验证不适用于 XSRF 令牌拦截

我正在实现一个简单的身份验证 API,该 API 配置Spring Boot为通过Basic Auth. 这是一个简单的GETAPI,没有任何参数,仅用于强制浏览器触发身份验证窗口:

我从我的Angular 7.3.10项目中使用这个 API,它服务于

同时我正在使用anti-CSRF保护,因此我处理所有 API 调用,以便为X-XSRF-TOKEN. 这是我的HttpInterceptor

现在,当我在我的 Angular 应用程序中调用 auth 端点时,我开始编写我的凭据,然后我收到以下错误:

preflight在接收我添加的请求时有一个请求,即使我正确地提供了我的凭据XSRF token,这个请求也不持有:Basic Auth header

预检请求第 1 部分 预检请求第 2 部分

现在,如果我从拦截器中删除添加 的部分XSRF token,那么在我提供凭据后,身份验证请求就可以正常工作。当然它不需要XSRF token, 因为它是一个GET请求,但是将来我需要同时使用Basic Authanti-CSRF保护POST API调用,所以必须能够使两者都工作。有任何想法吗?

0 投票
1 回答
48 浏览

https - 如何使用保存 X-XSRF-TOKEN 的 JMeter 测试脚本记录器登录 HTTPS 资源?

我正在尝试在 JMeter 中记录一个场景,这将使我能够登录应用程序并执行一些操作,但是当我尝试重现记录的场景时,我陷入了登录阶段。我在浏览器中设置了一个代理,设置了一个根 JMeter 证书,JMeter 记录了所有内容。

在登录中,我正在执行这样的 POST 请求:

POST https://ip:port/api/logon

POST 数据:
{"user":"text","member":"text","password":"text"}

Cookie 数据:
JSESSIONID=node{random}.node{random}

但它失败了response code 400 (Bad request)

我相信我应该捕获 X-XSRF-TOKEN 并使用它来以正确的方式访问会话,但我做不到。我正在尝试在此请求之前使用 JMeter 的正则表达式提取器将 X-XSRF-TOKEN 捕获到 ${token} 变量中。我可以在“响应标题”中看到它,但仍然找不到捕获它以便能够登录此资源的方法。

如何使用保存 X-XSRF-TOKEN 的 JMeter 测试脚本记录器登录 HTTPS 资源?

更新: 我想出了如何使用正则表达式从响应标头中获取 XSRF-TOKEN。它采用这种格式:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie 我还使用了这篇文章中的信息:https ://www.blazemeter.com /blog/how-load-test-csrf-protected-web-sites

为了得到它,我正在使用 JMeter 的正则表达式提取器,其中:

Field to check: Response-Headers

Regular expression: Set-Cookie: XSRF-TOKEN=([^;]+?) 我发现 JMeter 的正则表达式解析器可能是贪婪的和反向的。

Template: $1$

Match No.: 1

Default Value: NOT_FOUND

之后,我将 ${XSRF_TOKEN} 提供给 HTTP 标头管理器中的 X-XSRF-TOKEN 字段以用于下一个 HTTP 请求,但是当我启动脚本时,它仍然无法工作并向我发送一个新的 X-XSRF-响应标头中的 TOKEN。

更新№2:

我发现 jmeter 不会通过在 Chrome 浏览器中打开开发者控制台来发送所需的所有 cookie -> 网络 [记录]。它发送 JSESSIONID cookie,但不发送 XSRF_TOKEN cookie。现在,我正在努力将此 cookie 添加到我的请求中,以便能够建立会话。似乎只是将其添加到 HTTP Cookie 管理器中,例如:

Name: XSRF-TOKEN Value: ${XSRF_TOKEN} Domain: XXX Path: / Secure: yes\no

不起作用,因为变量值没有分配,它只是在 cookie 发送请求中显示 ${XSRF_TOKEN} 。