开发者在构建浏览器插件时,遇到了跨域请求的难题。目标是插件需要从网站A获取数据,处理后发送到网站B。然而,网站B的接口对请求头有严格校验,特别是Referer和Origin参数,导致插件无法直接发送请求。文章详细描述了问题背景、现有进展、难点以及已尝试的解决方案,并寻求解决该问题的思路和方法。
🤔 插件的初始目标是获取网站A的数据,经过处理后发送给网站B。由于网站B的接口对请求头有严格校验,包括Referer、Origin和Token,这给插件的跨域请求带来了挑战。
💡 开发者已经成功获取了网站B接口的数据和header,并能手动构造Token。但是,由于浏览器的安全策略,插件无法直接设置或伪造Referer和Origin,导致请求无法通过。
🚫 开发者尝试了多种方案,例如使用iframe、XMLHttpRequest和fetch,并手动构造header设置Referer/Origin,但均被浏览器拦截,返回403错误。
⚠️ 问题核心在于浏览器安全策略限制了插件对Referer和Origin的设置,导致无法模拟真实的请求头信息。开发者希望找到一种绕过这些限制的方法,使插件能够向网站B发起包含真实Referer和Origin的请求。
问题描述:
最近在开发一个浏览器插件,遇到了一个暂时无法解决的问题。
场景如下:
我需要从网站 A 的接口获取部分数据(包括请求头信息),并在插件中处理后,将数据发送给网站 B 的接口。
网站 A 和 B 是两个独立域名,B 接口对请求有严格校验。
目前进展:
已成功通过插件获取 B 接口数据及其 header (包括 cookie ) Token 可以手动构造。
需要将处理后的数据通过插件发起请求提交给 B 接口。
问题难点:
B 接口校验非常严格,必须包含 Referer 、Origin 和 Token 三个参数,缺一不可(已手动验证)。
由于浏览器的安全策略,插件中无法设置或伪造 Referer 和 Origin 。
已尝试以下方案,但均返回 403:
使用 iframe 发起隐藏请求;
通过 XMLHttpRequest 或 fetch 发起请求;
手动构造 header 设置 Referer/Origin ,但浏览器直接拦截。
请求帮助:
请教各位大佬们有没有什么思路或方法,可以在浏览器插件中绕过这些限制,可以向 B 接口发起含有真实 Referer 和 Origin 的请求?