我使用Charles代理(在OS X 10.9.3,Mavericks下)修改Origin头,以便我连接的API(在开发中)接受来自开发环境的传入请求。
我设法用一个简单的重写规则来完成这项工作,一切都工作到今天。
目前的问题是浏览器没有连接到代理(由Charles设置)。请求中的“失败”字段显示:“未发出请求。可能SSL证书被拒绝。”及以下,在Notes字段中:“您可能需要将浏览器配置为信任Charles CA SSL证书。”
我已经做到了这一点并且完美无缺。从那以后,我没有改变Charles的配置。我试图让它发挥作用的事情:
我还确保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
Cookie:...
来源: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
答案 0 :(得分:2)
这是一个非常古老的问题,但这是我今天为任何仍然存在问题的人找到的答案。
https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
您必须允许您的机器接受Charles ssl证书。 (在Mac上,这是通过钥匙串完成的。)