最近开发 chrome MV3 扩展程序,需要在 service worker 后台需要对一个网站的主页发起 http 请求,请求需要模拟用户在浏览器标签界面正常访问。
用户正常访问一个网站时,请求头包含如下特殊字段:
Sec-Ch-Ua: "......"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
在 worker 后台使用 fetch(url, options)
,请求头却如下:
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: none
二者明显不一样,网站可以通过请求头 Sec-Ch-xxx
、sec-fetch-xxx
判断是否是正常访问。
然而尝试设置 fetch 的 options
覆盖 headers
:
options.headers = {
'Sec-Ch-Ua': '......',
'Sec-Ch-Ua-Mobile': '?0',
'Sec-Ch-Ua-Platform': '"Windows"',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
}
并没有用, Sec-Ch-xxx
、sec-fetch-xxx
这些特殊请求头根本不能设置。
尝试设置 options.mode = 'navigate'
,则直接保存。
请问有任何办法设置这些特殊请求头吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.