当前位置: 首页 > news >正文

谷歌插件Fetch在不同页面之间Cookie携带情况详解

content script 和 script inject 表现情况

在碰到content script 注入和用script标签注入一样,即使服务端有写入Cookie到域名下在该tab标签应用下也不会被保存,所以在发送时也无法自动携带,所以通过content script和<script>这种方式无法传输隐式传输cookie,只能通过background来先拿到cookie再进行传送

服务端往请求端写入Cookie,服务端做了跨域允许,不允许跨域就没必要讨论这个逻辑了(注意注入的网站如何是https的则不能使用http协议,浏览器不允许)

<?php
/*** 功能:授权验证父类* @author wangsen* @date 2021/07/10 10:52:00* @version 1.0.0.0* @brief**/namespace app\controllers;use app\behaviors\BeforeSendBehavior;
use Yii;
use yii\filters\Cors;class ApiController extends Controller
{public function behaviors(){$behaviors = parent::behaviors();return array_merge($behaviors, ['corsFilter' => ['class' => Cors::class,'cors' => $this->corsConfig()], BeforeSendBehavior::class]);}public function corsConfig(){$origin = Yii::$app->request->headers->get("Origin");return ['Origin' => [$origin],'Access-Control-Request-Method' => ['POST', 'PUT', 'OPTION', 'GET'],'Access-Control-Request-Headers' => ['Authorization', 'Content-Type'],'Access-Control-Allow-Credentials' => true,'Access-Control-Max-Age' => 3600,'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],];}
}

d371003be9f44dd786d4b882b3ebaa75.png

 插件端采用<script>方式注入js脚本

dfb2a6ed8a72448eaaf1f0a22a94f710.png

inject-fetch.js 脚本

fetch("https://test.zfscrmteam.top:444/cookie/index", {"referrer": "https://blog.csdn.net/qq_36361250/article/details/114270670","referrerPolicy": "unsafe-url","body": null,"method": "GET","mode": "cors","credentials": "include"
}).then(e => console.log(e));

在当前应用下始终写不进Cookie

a599dea7755e41ce94fc687cb39a83f0.png 同域情况下注入和<script> 是会自动携带Cookie的,当然这种情况插件基本用不到

6c0a34737e9c4499ae7d2b5385a39240.png 

归根结底,凡是当前tab应用中没有存放Cookie的,这个域下面的Cookie就不会自动携带

42e84b70c6564e01a0edc4146c0c8ea0.png 

结论就是content script 和 script 脚本注入方式,都必须显式地将cookie放在body中传输,而不能由浏览器自动装填在header.Cookie传给后端

popup.html 和 background.js

这两者是相似的,只要服务端允许跨域,则都可以请求服务端,但奇特的是,如果host_permission不设置,设置了content script match 则携带Cookie

87ebe6bddc124545bdb3185e1175ade5.png

 

3e91e87e7ad541ee9ffd32244fade055.png

若content script 中没有匹配,则不携带

f48f837a5cc5463cb52a41c114e7f897.png 

 

eeb11d3bbd5b47b09a2365b9ef003cce.png

 若在host_permissions里面配置,则又会携带,所以证明content script中的matches和host_permissions竟然有交集,这个细节还是挺隐蔽的

91331ab11bf246b68c829881424970f4.png

 648f7d0c165c4e47bcf3ef296a37e6ec.png

 完全无权限的情况探究下background.js,请求中不懈怠Cookie

4416f78ac40c43cc84a2e54f5bffc2bf.png

 在content script 进行matches匹配,效果同popup.html ,证明在权限上,两者表现相同

caac0ef288ac4398bc82ae8d1926d91a.png

 结论

在处理Cookie相关事务时,想默认携带Cookie,只能采用popup.html或者background的方式,同时在content_scripts.matches 不能满足时,要添加host_permisssions来获取权限

 

http://www.lryc.cn/news/34539.html

相关文章:

  • Vue学习笔记(8)
  • 知道一个服务器IP应该怎么进入
  • 【计算机基础】Socket IO
  • mingw编译opencv
  • 数据结构(八)排序
  • 函数习题:用函数实现判断一个整数是否能被n整除
  • SAP 创建会计冲销凭证
  • Jetson(Ubuntu18.04)设备无法ping通百度能ping通局域网错误集合,(神奇的是这样的情况下Todesk等远程确没有问题)
  • Spring的@Conditional注解
  • 剑指 Offer 67 把字符串转换成整数
  • 【教学典型案例】18.开门小例子理解面向对象
  • Linux环境ENV的概念
  • AcWing数据结构 - 数据结构在算法比赛中的应用(下)
  • 基于嵌入式libxml2的ARM64平台的移植(aarch64)
  • 8. 字符串转换整数 (atoi)
  • [Tomcat]解决IDEA中的Tomcat中文乱码问题
  • python之dataclasses
  • 【MapGIS精品教程】007:MapGIS投影变换案例教程
  • list数据根据属性字段去重
  • java教程(2023-3-8)
  • node 配置 vue npm配置
  • 特斯拉、小鹏开路,城市NOA距好用还有几年?
  • Vue 3第九章:WatchEffect高级侦听器
  • c++基础——函数
  • DPDK系列之七DPDK中的虚拟化支持
  • 设计模式~桥接模式(bridge)-14
  • Java项目3 电子邮件
  • 设计模式~访问者模式(Visitor)-15
  • 实战小项目之视频监控(1-1)
  • DEJA_VU3D - Cesium功能集 之 103-直角箭头(标绘+编辑)