在Droid Turbo本地驱动器上使用Chrome创建cookies的问题及解决方法

6次阅读
没有评论

问题描述

开发基于XHTML的产品时遇到一个问题,在Droid Turbo的Chrome浏览器中,由于安全限制,从file:///路径执行javascript无法创建cookies。可以通过添加启动参数--enable-file-cookies来绕过此限制并允许创建cookies。然而,需要了解如何在Droid Turbo上自定义Chrome浏览器的启动方式。此外,有人提议通过将文件访问路径更改为http://127.0.0.1/(实际使用本地主机)的方式来解决cookies的问题。但是这种方式是否可行?

解决方案

方案1:自定义Chrome启动参数

安全性警告

请注意,在Droid Turbo上自定义浏览器启动参数可能会带来一定的风险和不稳定性,请在操作前确保已经充分了解相关设置信息。

通过添加--enable-file-cookies参数,可以在不影响安全性的前提下从file:///路径创建cookies。虽然这种方法简单且适用范围广,但依然需要手动修改Chrome或者使用相应的工具实现。
1. 安装Droid Turbo上的Developer Tools(开发者模式):首先在设备上启用开发者选项和USB调试,并通过ADB等方法获取必要的权限。
2. 在启动浏览器时加入参数--enable-file-cookies。可以通过以下ADB命令来启动带有该参数的Chrome:
sh
adb shell am start -W -n com.android.chrome/.MainActivity --es enable_file_cookies true

3. 验证cookies是否创建成功:通过访问相应网页并与开发者工具中的Cookies面板进行验证。

方案2:使用本地主机IP地址访问资源

这种方法是可行的,但需注意不是所有的情况都支持此方法。
1. 将文件路径更改为http://127.0.0.1/:可以通过在服务器端设置一个代理服务器来实现对外部文件的访问。例如,可以使用Python或其他语言编写一个小服务器,在Droid Turbo本地运行该服务器,并通过配置路由规则使得外部文件资源可通过http://127.0.0.1/路径访问。
示例代码如下(以Python为例):
“`python
from http.server import HTTPServer, SimpleHTTPRequestHandler

    class RequestHandler(SimpleHTTPRequestHandler):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, directory='/path/to/your/xhtml/files', **kwargs)

    if __name__ == "__main__":
        server_address = ('127.0.0.1', 8000)
        httpd = HTTPServer(server_address, RequestHandler)
        print(f'Server started on {server_address}')
        httpd.serve_forever()
    ```
  1. 通过http://127.0.0.1/您的资源路径访问文件:将之前使用的file:///地址全部更改为http://127.0.0.1/来访问相关资源。这可以绕过Cookies无法在file:///地址下创建的问题。

总结

根据实际开发环境的不同,两种方案各有优劣。为了更好地适应和优化用户体验,建议使用上述的“通过本地服务器映射”手段进行尝试。如果需要更多灵活性或支持其他网络请求类型,则可以考虑自定义Chrome启动参数的方法。选择合适的方法取决于具体需求以及是否愿意在移动设备上进行一定程度上的技术投入。

正文完