js获取页面response headers中各domain下的cookie个数、及总的cookie大小 跪求啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js获取页面response headers中各domain下的cookie个数、及总的cookie大小 跪求啊相关的知识,希望对你有一定的参考价值。

js获取页面response headers中按域名分类的cookie信息,传送到后端(eg:servlet)统计每个domain下cookie的大小及个数
要解决的就是这问题

参考技术A 刚收到你求助,说1点:

客户端js是无法获取全部cookie的。

因为HTTP协议中服务端可以指定有些cookie不允许客户端的js接收。
主流环境下,比如IE中的js只能统计允许的部分。就是为了避免你这种“收集再转发”通常叫“跨站脚本XSS”的不良需求。

还需要继续往这个方向探讨吗?追问

没法跟你讨论啊
我跟不上你
我现在连那可以获取的也抓不到
抓回来的response header就是没有"Set-Cookie"信息,但是firebug跟踪显示有"Set-Cookie"

追答

你提到抓报头,是在尝试用xmlhttp的吧。
基于安全原因,xmlhttp既不能接收,也不能发送cookie的。而且还有其他限制。
js的环境是个安全沙盒。。

抄我答案的都是些什么人啊
“ 能颜悦, rengzhen09”

追问

不认识啊,我也很无奈,抄的我的帖子,哈哈

我是用xmlhttp抓的,getallresponseheaders("Set-Cookie")返回是null的
有什么其他办法吗?

追答

xmlhttp会忽略"Set-Cookie""Set-Cookie2"。
如果非要用xmlhttp存取,可以试试降低ie的安全级别,关闭一些安全设定之后,可能允许接受吧。
如果取的是自己的站,可以把原来的cookie数据放到自定义报头中或者xml内容中间发送。。

一般来说,用自己的客户端才有完全的权限操作。。

追问

谢谢。
但是firebug能追踪到“Set-Cookie”信息,所以很痛苦

追答

是的,firebug属于浏览器插件,权限和本地程序一样无限制。
但在js的沙盒里面就限制多了。
如果是应用需求,就必须遵守安全规则吧。
如果只是技术尝试,各种方式都可以试试。

参考技术B js 只能在当前域名下进行操作,不能跨域的.

如: www.qq.com
game.qq.com
web.qq.com
......
采用的域名为 qq.com

你是想搞破坏吗?追问

js获取页面response headers中按域名分类的cookie信息,传送到后端(eg:servlet)统计每个domain下cookie的大小及个数
要解决的就是这问题

追答

1.瀏覽器已對數據包處理完,生成html 才開始執行js ,js 是沒有權限進行操作 數據包頭讀取的和讀取文件大小操作
2.js 只能對 cookie 進行讀取和修改的.
3.js document.domain 只能對當前域名有效,其他的會拋錯的.
=========綜合以上情況=======================
只能做到,已知 域名 cookie 讀取 并發送 cookie 內容+長度
1.hosts 文件,對已知的域名進行配置 如: 127.0.0.1 test1.qq.com
127.0.0.1 test1.163.com
把相關的域名也配置成一個webserver , iis/resin/......
2.index.htm
加入 tdomain="qq.com"
document.domain=tdomain
io = document.createElement("script");
io.src="XXXXXX.jsp?cookie="+document.cookie+"&domain"+tdomain
document.getElementsByTagName("head")[0].appendChild(io);

追问

这个domain我没说清楚
就如访问www.hao123.com
统计响应信息中的域名、二级域名的cookie个数及大小

追答

你用的是 firebug 軟件,是對數據包進行處理,js 是沒有能力對數據包進行處理的.
但讀取 cookie 內容是能做到的.

關于cookie大小, 需要你自己計算了
str.length/1024/1024/1024
B KB MB GB

本回答被提问者采纳

vue.js 和 axios 使用但无法在 response.headers 中接收 set-cookie

【中文标题】vue.js 和 axios 使用但无法在 response.headers 中接收 set-cookie【英文标题】:vue.js and axios using but unable to receive set-cookie in response.headers 【发布时间】:2020-06-12 10:35:12 【问题描述】:

我尝试从 Vue js coreui 主题调用外部 api,但无法在 response.headers 中接收 set-cookie

代码如下

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
  axios.defaults.headers.common['Access-Control-Allow-Credentials'] = true;
  axios.defaults.headers.common['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8000';
  axios.defaults.headers.common['Access-Control-Allow-Headers'] = 'X-PINGOTHER, Content-Type';
  axios.defaults.headers.common['Access-Control-Expose-Headers'] = 'Access-Token, Uid';
  axios.defaults.headers.common['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS';
    axios
    .post('url', 
    
        par : '20'
    , 
        withCredentials: true,
        )
    .then(function(response)
      console.log(response);
    )
    .catch(error => console.log(error))

我都试过了

axios.defaults.headers.common['Access-Control-Expose-Headers'] = 'Access-Token, Uid';

这个和

withCredentials: true,

响应正确,但标题不同

response.headers in console

在开发者工具中如下: developer tools response header

注意: 在 Postman 上,我得到了 set-cookie,但在应用程序上却没有得到响应。

我尝试了所有与 Axios 和 Vue js 相关的东西,但仍然没有在标题中获得 set-cookies。

【问题讨论】:

Access-Control- 标头是 response 标头;它们必须在服务器上设置。我建议阅读例如developer.mozilla.org/en-US/docs/Web/HTTP/CORS 我在服务器上浏览了这个链接,我们已经设置了响应标头,因此它来自邮递员但不在应用程序中。那是我的问题。 你能在代码 sandbox.io 上生成工作示例吗? 【参考方案1】:

实际上,您将requestresponse 混淆在一起。正如@jonrsharpe在评论部分所说,标题以前缀Access-Control-开头是Response Headers,这意味着它应该由服务器发送到浏览器作为响应。但是在这里,您是从客户端将其发送到服务器。

您应该在服务器端应用程序中启用它。不在客户端。

请参考, Set-Cookie not working in browser but works with Postman

【讨论】:

withCredentials: true,我为响应头写的这一行。如果不正确,请告诉我正确的方法。因为在邮递员中调用 api 时,我在响应标头中获取了 set-cookie 标头,但是在通过 axios 调用时,我没有在 response.headers 中获取 set-cookie 标头 您应该启用 CORS 请求,请注意 CORS 仅适用于浏览器,不适用于 API 客户端。所以它适用于邮递员但不适用于浏览器。 ***.com/questions/44849628/… 我在服务器端进行了更改,将标题添加为 Access-Control-Expose-Headers,它给了我每个标题。

以上是关于js获取页面response headers中各domain下的cookie个数、及总的cookie大小 跪求啊的主要内容,如果未能解决你的问题,请参考以下文章

js如何获取response header信息

node.js里Response headers里中文乱码怎么解决

js在返回response header中取值

一爬虫之基础

vue.js 和 axios 使用但无法在 response.headers 中接收 set-cookie

从 python 请求中的 response.headers 获取位置