有没有一种方法可以在网页中声明所有的javascript http请求必须只针对同一主机



我有一个小网站,可以显示来自不同广告网络的广告。有时这些广告网络提供的广告包含向外部服务器发出HTTP请求的js代码,我发现有时这些请求侵犯了我的用户的隐私。

有没有办法阻止js对其他服务器的请求?(即使我失去了该广告的潜在收入或被禁止进入广告网络(

页面可以通过网络响应上的HTTP标头或页面内的<meta>标记使用内容安全策略(CSP(。CSP用于控制页面可以与哪些外部源进行通信。

CSP可以有许多不同的指令,这些指令控制不同类型的外部请求。您听起来对connect-src指令特别感兴趣,该指令限制了脚本可以通过fetch(以及类似的API(访问的来源。

请注意,脚本仍然可以通过向页面添加外部资源(例如<img><object><link>等(来启动外部请求。如果要限制所有外部请求,可以使用default-src 'self'将所有指令默认为与页面本身相同的来源。然后,如果需要,您可以添加更为宽松的其他特定指令。

例如,此策略阻止所有外来源请求和资源,但允许来自ads.example.com(以及原始源(的帧、图像和脚本除外:

default-src 'self'; img-src 'self' https://ads.example.com; script-src 'self' https://ads.example.com; frame-src 'self' https://ads.example.com

由于未指定connect-src,因此它受到default-src的限制,不允许脚本与外部源进行通信。

最新更新