当前的问题是浏览器无法连接到Charles设置的代理。请求中的“Failure”字段显示:“未发出请求。可能拒绝了SSL证书。”,在下面的笔记中:“您可能需要配置浏览器信任Charles CA SSL证书。”
我已经尝试过设置,而且它完美地工作。自那时以来,我没有更改过Charles的配置。为了让它工作,我尝试了以下几种方法:
- 卸载和重新安装 Charles 证书。
- 在以下浏览器中尝试相同的操作:Chrome Canary,Chrome stable,Safari和Firefox
- 使用 HTTP 代理而不是更高级的 SOCKS 代理。
我不确定这是否是解决方案的线索,但当我在开启Charles的情况下直接访问API时,我看到了这个:
API确实托管在Windows Azure平台上,但我不明白为什么Charles证书(因为Charles充当中间人,向浏览器显示其证书)是针对*.azurewebsites.com而不是实际主机。
需要注意的是,实际主机(比如api.example.com)拥有一个有效的购买通配符证书,用于*.example.com。
如果有人知道如何解决这个问题或者具体发生了什么,我会非常感激她的建议。
谢谢。
附注:如果我调整直接请求以具有适当的Origin头(已修改/清除敏感信息),则:
GET /xxx HTTP/1.1
主机: api.example.com
连接: keep-alive
缓存控制: 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, like Gecko) Chrome/35.0.1916.114 Safari/537.36
接受编码: gzip,deflate,sdch
接受语言: en-US,en;q=0.8,hu;q=0.6
Cookie: ...
来源: https://acceptable.host.com
我得到了以下回复:
HTTP/1.1 400 Bad Request
内容长度 46
内容类型 application/json; charset=utf-8
服务器 Microsoft-IIS/8.0
X-Powered-By ASP.NET
设置Cookie ARRAffinity=secret-token;Path=/;Domain=api.example.com
日期 Wed, 21 May 2014 07:58:02 GMT