Android Emulator CONNECT 隧道缺少预期的 header

标签 android eclipse rest cordova fiddler

我正在编写一个针对 RESTful api 的 phonegap 应用程序。出于调试目的,我想看看我的 POST 和 GET 是什么样子的。 google 上的所有信息都说要使用 fiddler 代理。我安装了 fiddler 并开始工作,设置我的 android 模拟器来使用它,但是每当我开始查询 restful 服务时,数据包都会以某种方式被破坏(或者至少是它的授权部分)。

如果我没有代理,下面的 JS 代码在我的 android 模拟器中工作正常:

$.post("https://blah.hi.com/homepage/security_check",
     $("#loginForm").serialize(), function (data, textStatus, jqXHR) {...

但是当我使用 fiddler 来分析我的 android 应用发出的请求时,我收到以下错误:

enter image description here

据我通过检查 fiddler 中的初始请求可以看出,进行了以下更改:

用户代理、连接和主机 header 被剥离。我尝试使用 Fiddler 规则手动添加它们,但这没有用。

这是一个很好的比较:

enter image description here

此外,当我查看请求的 TextView 选项卡时,Extensions 下的以下标题被删除(以下是使用 Chrome 并通过 fiddler 和工作时请求的外观图片):

enter image description here

现在这里是通过 eclipse android 模拟器,通过 fiddler 失败: enter image description here

我考虑过使用 WireShark,但所有通信都是通过 https 完成的,我更愿意使用 fiddler。

任何建议将不胜感激!!此外,我通过使用以下参数 -http-proxy 127.0.0.1:8888 从此处 http://vkosinets.com/blog/2011/08/16/debug-http-requests-from-android-emulator 访问代理。

编辑:这是使用 Android 4.X 模拟器(同样失败)时的一些调试信息。 enter image description here

最佳答案

这很可能是针对旧版 Android SDK/模拟器报告的问题:

Issue 12356: lost header on https connection via proxy

还值得检查相关问题中缺少的标题讨论:

Issue 3334: SSL web sites fail to load in browser application when not connected via Wi-Fi

根据 this post ,这个问题好像只存在于Android 3.x及以下版本:

this problem is ONLY occuring on Android 3.x and lower versions. iOS is fine. All major desktop browsers are fine. Android 4.x is fine.

尝试使用 Android 4.x 模拟器,看看是否可行。

更新:

在某些情况下,这可能是一个配置挑战,而不是一个不清楚的错误。查看Setting up a persistent trusted CA in an Android emulator :

Setting up a persistent trusted CA in the Android emulator is a common problem, encountered any time we assess an application within an emulator, that use SSL properly. The goal is to man-in-the-middle (MITM) traffic from an application running in the Android emulator.

In order to successfully MITM traffic, the Certificate Authority (CA) of the middle node must be trusted by the device, otherwise the connection will fail with some generic SSL Handshake error. Typically, the middle node can be flagged as trusted on a rooted phone by modifying the cacerts file, and rebooting the device. When attempting to do this in the Android emulator, rebooting the virtual device causes the OS to revert many system files back to their base state – including the cacerts file. The rest of this post describes how to set up an emulator that will retain modifications to the core system files after reboots. This has not been documented in one place (to my knowledge), so hopefully this will save time for those facing this problem.

... ...

关于Android Emulator CONNECT 隧道缺少预期的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14653484/

相关文章:

java - 我们如何更改小部件按钮的图像?

java - 从 org.eclipse.xtext.common.types 获取 "new"依赖项

java - 使用 javafx 获取要播放的 mp3 文件

json - 在 Jmeter 中,我试图发送一个 post rest api 请求,其中包含主体中的 json 并获得不受支持的媒体 415

typescript - 在 NestJS 中处理 204 无内容响应的最佳方法是什么?

android - android.opengl.matrix 中 setRotateM 函数背后的数学原理是什么?

javascript - 如何使用 Cordova 在同一设备上获取其他已安装应用程序的版本?

android - Android 中的动态 Http Streaming 播放实时 Flash 视频

android - 我在将 OpenCV 添加到新的 Android 项目时遇到了一些问题

java - REST Web 服务 POST 方法 header 和表单参数