如何阻止Team Foundation Server Web界面显示Gravatar头像?
阻止TFS Web界面加载第三方Gravatar头像的解决方案
针对你使用的TFS 15.117版本,我整理了几个能有效阻止Web界面加载第三方Gravatar头像、只保留本地上传头像的方案,你可以根据自身环境选择:
方法1:修改TFS服务器配置(最推荐)
TFS本身就内置了禁用Gravatar的配置项,直接修改服务器端的配置文件就能搞定:
- 找到TFS应用层服务器上的
web.config文件,常规路径是C:\Program Files\Microsoft Team Foundation Server 15.0\Application Tier\Web Services\web.config - 打开文件,找到
<appSettings>节点,在里面添加一行配置:<add key="EnableGravatar" value="false" /> - 保存文件后,重启TFS相关服务:在Windows服务管理器里找到
Visual Studio Team Foundation Background Job Agent和对应的IIS应用池(Microsoft Team Foundation Server Application Pool),重启它们。
这个配置会让TFS彻底停止向Gravatar服务器发起请求,只使用本地用户上传的头像。
方法2:通过反向代理拦截请求
如果你的TFS前端部署了反向代理(比如IIS ARR、Nginx),可以在代理层拦截所有Gravatar的请求:
- IIS ARR配置:在URL重写模块里新建规则,匹配
https://secure.gravatar.com/avatar/*的请求,然后将其重定向到你本地的默认头像文件(避免界面显示缺失头像),或者直接返回404。 - Nginx配置:在Nginx的站点配置里添加以下规则:
location ~* ^/avatar/ { rewrite ^(.*)$ /path/to/your/local/default-avatar.png break; # 若不需要默认头像,也可以直接 return 404; }
这样TFS发起的重定向请求会被代理拦截,不会泄露任何仓库信息到Gravatar服务器。
方法3:浏览器用户脚本(个人临时方案)
如果不想碰服务器配置,也可以用浏览器的用户脚本工具(比如Tampermonkey)来实现客户端拦截:
- 先安装Tampermonkey插件
- 创建一个新脚本,粘贴以下代码:
// ==UserScript== // @name Block TFS Gravatar // @match https://tfs.local/tfs/*/_git/*/history* // @match https://tfs.local/tfs/*/_git/*/commits* // @grant none // ==/UserScript== (function() { 'use strict'; // 移除已加载的Gravatar图片 document.querySelectorAll('img[src*="gravatar.com"]').forEach(img => { img.src = ''; // 也可以替换成你自己的本地默认头像URL }); // 监听动态加载的内容(TFS会异步加载历史记录) const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.tagName === 'IMG' && node.src.includes('gravatar.com')) { node.src = ''; } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })();
这个脚本会自动拦截页面上所有指向Gravatar的图片请求,适合个人临时使用。
验证是否生效
修改完成后,打开TFS的Git历史页面,按下F12打开浏览器开发者工具,切换到“网络”标签,刷新页面后确认没有secure.gravatar.com的请求,同时本地上传的头像正常显示,就说明配置生效了。
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

