我使用 Charles 代理(在 OS X 10.9.3,Mavericks 下)修改 Origin 标头,以便我连接的 API(开发中)接受来自开发环境的传入请求。
我设法通过一个简单的重写规则完成了这项工作,直到今天一切正常。
当前的问题是浏览器没有连接到代理(由查尔斯设置)。请求中的“失败”字段显示:“未提出请求。可能 SSL 证书被拒绝。”,在下方的备注字段中:“您可能需要配置浏览器以信任 Charles CA SSL 证书。” .
我已经这样做了,而且效果很好。从那以后我没有改变查尔斯的配置。我试图让它工作的事情:
- 卸载并重新安装Charles 证书。
- 在以下浏览器中尝试相同的操作:Chrome Canary、Chrome stable、Safari 和 Firefox
- 使用 HTTP 代理而不是更高级的 SOCKS 代理。
我还确保无论默认设置如何,Charles 证书始终是受信任的:
不确定这是否是解决方案的线索,但是当我在打开 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
Accept-Encoding: gzip,deflate,sdch
Accept-语言:en-US,en;q=0.8,hu;q=0.6
Cookie:...
来源:https ://acceptable.host.com
我收到以下回复:
HTTP/1.1 400 错误请求
内容长度 46
内容类型应用程序/json;charset=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格林威治标准时间