小编Pra*_*mon的帖子

我可以安全地阻止Dalvik浏览器代理请求吗?

我注意到,当Android-OS设备上的用户访问我的网站时,每个页面上都会发生两个请求.第一个是普通浏览器,第二个是"Dalvik".例:

"GET/HTTP/1.1"200 2126" - ""Mozilla/5.0(Linux; Android 5.0.2; SAMSUNG SM-G925F/G925FXXU1AOD8 Build/LRX22G)AppleWebKit/537.36(KHTML,与Gecko一样)SamsungBrowser/3.0 Chrome/38.0. 2125.102 Mobile Safari/537.36"1229 2802

"GET/HTTP/1.1"200 2117" - ""Dalvik/2.1.0(Linux; U; Android 5.0.2; SM-G925F Build/LRX22G)"546 8729

根据我对此的理解,第一个请求来自实际的浏览器,另一个来自运行浏览器的虚拟机(Dalvik).问题是Dalvik请求不使用相同的cookie和/或POST数据,这会触发服务器端的错误.一个例子是当用户注册帐户时.普通浏览器通过POST数据发送,但Dalvik请求只对动作URL进行了GET.同样,如果用户已登录,Dalvik将在基于权限的页面上尝试GET,该页面可能会将其重定向到其他位置,因为它没有会话.

用户没有遇到任何实际问题(据我所知),但是,我们注意到错误记录的尝试.所以我的问题是:我可以肯定地阻止所有访问尝试,如果浏览器代理指示"的Dalvik/.*."?是否会对用户产生任何不利影响?考虑到与Dalvik相关的请求实际上没有重新发布真实数据或进行会话,似乎不太可能.但希望有更多Android经验的人可以提供一些反馈,例如,我应该发出特定的HTTP标头/状态代码,例如"401 Unauthorized"或"400 Bad Request"?

任何帮助,将不胜感激.

browser android dalvik

8
推荐指数
1
解决办法
7364
查看次数

如果没有用户交互,Chrome popstate不会在“后退按钮”上触发

我正在尝试使用“ pushState”和“ popstate”事件来捕获“后退”按钮导航,但是,尽管popstate事件在Firefox中可以正确触发,但在Chrome浏览器中不会触发(版本76.0.3809.87(官方内部版本))(64 -bit)),如果没有用户交互

通过测试,看来popstate事件仅在用户与页面进行交互(即,单击文档上的某个位置)时才被触发。因此,如果您加载页面而不进行交互并单击Back,则不会调用popstate函数。

我添加了一个小提琴来演示这一点:https : //jsfiddle.net/0xwvLndu/

要在Chrome中测试小提琴,只需点击链接并点击“后退”按钮。您不会看到任何警报。然后再次单击链接,但是这次单击Fiddle文档上的任意位置,然后单击“上一步”按钮,然后触发警报。

我在Chromium论坛上找到了一个可能与此怪癖有关的讨论,并且也许已实施该讨论以防止滥用历史记录-https://groups.google.com/a/chromium.org/forum/#! topic/ blink-dev / OCS7g72HtyIhttps://github.com/WICG/interventions/issues/21#issuecomment-425609246

如果是这种情况,是否意味着就不能再依赖popstate来捕获“后退”按钮动作了,如果是,是否有解决方案?

以下是我一直在测试的示例:

window.addEventListener('load', function() {
    history.pushState(null, null, document.URL);
});

window.addEventListener('popstate', function(event) {
    alert('test');
});
Run Code Online (Sandbox Code Playgroud)

我希望无论用户如何交互都可以在“后退按钮”上触发警报,但这在Chrome中不会发生。

javascript popstate

6
推荐指数
1
解决办法
353
查看次数

标签 统计

android ×1

browser ×1

dalvik ×1

javascript ×1

popstate ×1