问题标签 [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.
angular - Angular http 拦截器,缺少 XSRF 令牌 - 保留或包装其他 htp 请求,直到 api-bootstrap(api 引导调用)请求完成
Angular 有时无法添加 XSRF 令牌,因此我们添加了拦截器做双重检查并在丢失时添加令牌。然后我们发现它有时无法读取 cookie,所以我们添加了 3rd 方库来读取 cookie.. 但是我们仍然面临第一次尝试时缺少 XSRF 令牌的 prod 错误,特别是当从另一个站点重定向到我们这边时,随后刷新页面工作正常。
我们的一个理论是 cookie 尚未设置,即在实际设置 cookie 之前运行 cookie 的角度读取的竞争条件。认为遇到此错误的流量很低,我们需要解决这些错误并减少客户的挫败感。
现在我们想将请求保持几毫秒然后读取 cookie,即使没有找到 cookie,我们也想执行第二次 /ws/bootstrap 调用。
我很难理解或想出这个拦截器中的代码。非常感谢任何建议或参考。
同时,我将尝试在评论中发布我修改后的代码,但到目前为止,这几乎是无效的代码。
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 堆栈上配置它。这是我看到的唯一一件不同的作品。我究竟做错了什么?
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.request
since的默认标头cy.intercept
不适用于cy.request
.
我的尝试草图(在哪里c.value
)null
:
python - 如何在 Python 中使用 session.get 请求发回 XSRF 令牌?
我正在尝试在网站上搜索“Adrian”一词。我已经明白,首先我必须向网站发送一个请求,在响应中我将有一个 XSRF 令牌,我需要将它用于第二个请求。据我了解,如果我使用 session.get() 它也会自动为第二个请求保留 cookie。我运行第一个请求,得到 200 响应,我打印出 cookie,令牌就在那里。我运行第二个请求,我得到一个 400 错误,但是如果我打印出第二个请求的标头,则令牌就在那里。我不知道哪里出了问题。为什么我第二个得到400?
我还尝试跳过会话并在第二个请求中使用 requests.get() 并自己将令牌添加到标头,但结果是相同的:
c# - 我需要在 asp.net Core 中创建 XSRF 中间件吗?
我不确定是否必须将 xsrf 中间件附加到我的 ASP.NET Core REST Api 应用程序。我已经通过添加 UseCors() 中间件将我的应用程序管道配置为使用 cors,但仍然不明白这是否足够。
现在我正在同时使用AddAntiforgery
和AddCors
使用我自己的中间件UseXsrf
和微软的UseCors
.
angular - 如何在 Laravel 8 的 Angular 11 API 请求标头中设置 XSRF-TOKEN?
我集成Angular (11) frontend
在Laravel 8
应用程序中。为了发出 API 请求,用户必须登录。每次前端 Angular 向后端 API 发出请求时,我都会收到以下错误:
我已经设置VueJs frontend
测试相同的 API 端点 URL,VueJs 可以到达 API 端点并从后端获取响应。当我将Request Headers
VueJS 发出的 API 请求与 Angular 11 发出的请求进行比较时,我Request Headers
发现Angular 11
没有X-XSRF-TOKEN
. 所以我认为这就是我收到上述错误的原因。
以下是在 Laravel 8 中如何设置VueJs
以及如何在.AXIOS
X-XSRF-TOKEN
API Request Headers
如何设置X-XSRF-TOKEN
or X-CSRF-TOKEN
in API Request Headers
making by Angular 11
inside Laravel 8
?
注意:Angular 11 前端和 VueJs 前端都集成在 Laravel 8 应用程序的前端网页上,因此它们在同一个域中。所以我认为laravel-cors
不需要包。
php - 如何以编程方式登录 Cypress for PHP larvavel 会话网站
我在 Cypress 中编写测试代码。UI登录已经测试没有问题,但是为了测试网站的其他部分,我想以编程方式登录以进行快速测试。该网站是用 PHP 编写的,并在标头的 set-cookie 中使用 laravel 会话,下面是我的代码:
规格
命令.ts
索引.d.ts
任何帮助表示赞赏。谢谢!
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
标题。
angular - 基本身份验证不适用于 XSRF 令牌拦截
我正在实现一个简单的身份验证 API,该 API 配置Spring Boot
为通过Basic Auth
. 这是一个简单的GET
API,没有任何参数,仅用于强制浏览器触发身份验证窗口:
我从我的Angular 7.3.10
项目中使用这个 API,它服务于
同时我正在使用anti-CSRF
保护,因此我处理所有 API 调用,以便为X-XSRF-TOKEN
. 这是我的HttpInterceptor
:
现在,当我在我的 Angular 应用程序中调用 auth 端点时,我开始编写我的凭据,然后我收到以下错误:
preflight
在接收我添加的请求时有一个请求,即使我正确地提供了我的凭据XSRF token
,这个请求也不持有:Basic Auth header
现在,如果我从拦截器中删除添加 的部分XSRF token
,那么在我提供凭据后,身份验证请求就可以正常工作。当然它不需要XSRF token
, 因为它是一个GET
请求,但是将来我需要同时使用Basic Auth
和anti-CSRF
保护POST API
调用,所以必须能够使两者都工作。有任何想法吗?
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} 。