PowerShell调用谷歌字体API返回结果与浏览器请求不一致问题
PowerShell调用Google Fonts API与Chrome返回内容差异的原因及相关情况
差异原因
- 请求头不完整:Chrome发送请求时,除了User-Agent,还会携带
Accept、Accept-Language等关键请求头。Google Fonts API会依据这些信息做判断:- 客户端是否支持woff2格式(需要
Accept头明确包含font/woff2); - 用户的语言偏好,据此返回拆分了
unicode-range的多语言字体规则。
而PowerShell的Invoke-WebRequest即便设置了Chrome的User-Agent,默认的Accept头通常仅包含文本、网页相关类型,不会声明支持woff2,所以API只会返回兼容性更强的woff格式,且不会拆分语言范围。
- 客户端是否支持woff2格式(需要
- 请求头细节差异:Chrome还会发送
Sec-Fetch-*这类现代浏览器专属的请求头,PowerShell默认不会携带这些字段,API会将其判定为“非现代客户端”,直接返回简化版的CSS内容。
是否有其他人遇到该问题?
是的,不少使用curl、Python requests等工具调用Google Fonts API的用户都碰到过类似情况。核心原因都是工具默认发送的请求头与浏览器的完整请求头不匹配,导致API返回不同的响应内容。
内容的提问来源于stack exchange,提问作者Josef
相关产品推荐
相关产品推荐

