1

因此,我目前遇到了尝试在 Jelly Bean 的官方库存 Android 浏览器上打开我们的网络应用程序的问题。我不知道我能详细说明这个问题,但我会尽力而为。

对于运行 ICS 或更早版本的设备,在任何浏览器(stock、firefox、chrome)上,我们都可以输入我们 Web 应用程序的 URL,进入登录页面,登录并查看一切正常。

对于运行 Jelly Bean(4.1 和 4.2)的设备,如果我们在stock browser中输入 url ,我们会得到以下信息:

在此处输入图像描述

但是,如果我们使用ChromeFirefox,就可以了。

我们收到此错误很奇怪,因为我已经在我们的网络上进行了身份验证,我只尝试访问登录屏幕,因此不需要其他身份验证。

我们的 Web 应用程序从服务器获取信息,这在服务器端似乎不是问题。

因此,罪魁祸首似乎是 Jelly Bean 中的库存浏览器,我尝试查找库存 Web 浏览器从 ICS 到 Jelly Bean 是否有任何变化,但我找不到任何东西。

有没有人提出过这样的问题,或者是否知道 Jelly Bean 上的库存 android 浏览器发生了任何重大变化(可能与安全性有关?)?

编辑:这个网络应用程序在外部不可用。目前我们只在内部进行了测试,您必须连接到我们的内部网络。

EDIT2:刚刚检查了海豚浏览器,同样的事情发生了......所以我现在真的迷路了,因为我更不确定它与 4.1+ 股票浏览器有关。另外,让我感到更加失落的另一件事是,我刚刚在 4.1.2 上查看了 Galaxy SIII 的股票浏览器,页面加载正常......

EDIT3:好消息,我们的开发人员已经进行了进一步调查,显然这是问题所在:

默认浏览器在请求中添加了一个额外的标头,使我们的服务器认为它是一个 ajax 请求并拒绝它,因为请求的其余部分实际上不是一个 ajax 请求......这个错误是因为 Android 4.1+ 中的默认浏览器引起的已向所有请求“X-Requested-With: com.android.browser”添加了一个新标头。

所以我猜 Dolphin HD 浏览器也能做到这一点......正在做进一步的调查,所以会回到这个问题上并给出答案

4

1 回答 1

0

根据我们进行一些研究的开发人员的说法:

默认浏览器为请求添加了一个额外的标头,使我们的服务器认为它是一个 ajax 请求并拒绝它,因为请求的其余部分实际上不是一个 ajax 请求......

此错误是由于 Android 4.1+ 中的默认浏览器为所有请求添加了一个新标头“X-Requested-With: com.android.browser”。

目前,我们无法花更多时间尝试通过代码找到解决此问题的好方法...因此我们决定将此记录为一个已知问题,并建议人们在拥有 4.1+ 设备的情况下使用 Chrome

于 2013-04-21T21:15:27.513 回答