问题标签 [client-hints]

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 投票
1 回答
328 浏览

javascript - 由于 Chrome 版本 89.0.4389.72 添加了新的标头 **`sec-ch-ua` 和 `sec-ch-ua-mobile`**,Testcafe 测试失败

我正在运行一个基本的自动化 testcafe 测试,该测试单击一个按钮(触发 API)并等待页面上显示响应,以便测试可以继续。只有当我在最新版本的 Chrome、Firefox、Opera 和 Edge 上运行场景 VIA TESTCAFE 时,该网站才会在单击该按钮后出现来自该 API 调用的 500 错误。当在 testcafe 中提到的旧版本浏览器上运行测试时,或者当我在最新浏览器上手动运行测试时,应用程序和测试通过。

经过一番调查,我注意到 Chrome v89 添加了两个默认发送的新请求标头:sec-ch-uasec-ch-ua-mobile当我手动运行测试时,但是当我通过TestCafe运行测试时,这两个标头未通过,这会中断对 API 的调用。

在此处找到 Chrome 添加的新功能:

在此处输入图像描述

我有“testcafe”:“^1.13.0”,使用 Chrome 最新版本 89.0.4389.72(64 位)

任何人都知道如何使 TestCAfe 测试的行为与我使用最新的 Chrome 手动运行测试时的行为完全相同(添加这两个标头)?

0 投票
1 回答
29 浏览

karate - 使用 driver.emulateDevice() 模拟设备的可用选项有哪些

我想使用 Chrome 来模拟不同的设备,以便在不同的模拟器上运行我的前端测试。在文档中,我找到了以下示例

And driver.emulateDevice(375, 812, 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1')

我在哪里可以获得不同选项的列表?

0 投票
1 回答
132 浏览

php - 在第一次请求时选择加入 CH 标头

我正在尝试在 PHP 中获取客户端提示标头。这些需要选择加入。我使用header()函数来做到这一点。之后,我阅读了标题。现在问题来了:我一次打开网站时无法读取该标题。如果我刷新页面,PHP 可以访问标题并且一切正常。我检查了 Chrome 中的“网络”选项卡,并device-memory没有在第一次请求时发送。然而,在第二个。

如果我尝试在在线沙箱中运行此代码,它总是无法读取请求的标头。

这是我使用的代码: