我使用Charles代理(在OS X 10.9.3,Mavericks下)来修改Origin头,以便我连接的API(在开发中)接受来自开发环境的传入请求.
我设法用一个简单的重写规则来完成这项工作,一切都工作到今天.
目前的问题是浏览器没有连接到代理(由Charles设置).请求中的“失败”字段显示:“未发出请求.可能SSL证书被拒绝.”及以下,在Notes字段中:“您可能需要将浏览器配置为信任Charles CA SSL证书.” .
我已经做到了这一点并且完美无缺.从那以后,我没有改变Charles的配置.我试图让它运作的东西:
>卸载并重新安装the Charles certificate.
>在以下浏览器中尝试相同:Chrome Canary,Chrome stable,Safari和Firefox
>使用HTTP代理而不是更高级的SOCKS代理.
无论默认设置如何,我还确保Charles证书始终受信任:
不确定它是否是解决方案的线索,但是当我打开Charles直接导航到api时,我看到了:
该API确实托管在Windows Azure平台上,但我不明白为什么Charles证书(因为Charles充当中间人,向浏览器显示其证书)的原因是* .azurewebsites.com而不是实际的主人.
请务必注意,实际主机(例如api.example.com)具有* .example.com的有效购买通配符证书.
如果有人暗示如何解决这个问题或究竟发生了什么,我真的很感激她的建议.
谢谢.
PS.如果我调整直接请求以获得正确的Origin头(修改/清除了合理的信息):
GET / xxx HTTP / 1.1
主持人:api.example.com
连接:保持活力
缓存控制:max-age = 0
接受:text / html,application / xhtml xml,application / xml; q = 0.9,image / webp,/; q = 0.8
用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_9_3)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 35.0.1916.114 Safari / 537.36
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en; q = 0.8,hu; q = 0.6
曲奇饼: …
起源:https://acceptable.host.com
我收到以下回复:
HTTP / 1.1 400错误请求
内容长度46
Content-Type application / json;字符集= utf-8的
服务器Microsoft-IIS / 8.0
X-Powered-By ASP.NET
Set-Cookie ARRAffinity = secret-token; Path = /; Domain = api.example.com
日期:2014年5月21日星期三07:58:02 GMT
最佳答案 这是一个非常古老的问题,但这是我今天为任何仍然存在问题的人找到的答案.
https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
您必须允许您的机器接受Charles ssl证书. (在Mac上,这是通过钥匙串完成的).