现在有这样一个网页
https://yunbanktest.bankcomm.com/personbank/walletPay/H5Cashier/Cashier/cashier_main.html
这个服务器是挂在交行总行的,我的需求是在钉钉第三方企业应用中使用webview打开这个页面进行订单支付
这个页面在iOS端,或者模拟器里,亦或是普通的浏览器里,都可以正常访问,但是在安卓的钉钉第三方企业应用的webview里,也就是我的项目跑在安卓机器上,就会报412错误
这里我猜想可能是钉钉重写了webview,或者js引擎之类的,并不是用的Chrome,导致请求的标识符不同于一般的浏览器。因此被交行总行的服务器拒绝,但是我即搞不到总行服务器的信息,也看不了钉钉请求的信息,因为是https的请求,抓包也抓不了。现在很是烦恼。不知道该如何解决这个问题。
请问这个有什么解决办法么
这个是正常访问的截图
这个是Android端打开上述地址时候的界面
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您的描述,您在尝试通过钉钉安卓端的webview加载一个HTTPS网页时遇到了412错误,而该页面在其他环境(如iOS、模拟器、普通浏览器)中可以正常访问。此问题可能与钉钉webview的定制化实现有关,特别是关于HTTPS请求头或用户代理等方面的差异,导致服务器端识别不一致并拒绝了请求。
尽管直接获取和修改钉钉webview的具体配置较为困难,以下是一些可能帮助您解决此问题的策略:
任务描述:尝试修改webview中的User-Agent字符串,使其模拟常见的浏览器标识,以期通过服务器验证。
实现步骤:
WebSettings
设置User-Agent。WebView webView = findViewById(R.id.webView);
WebSettings settings = webView.getSettings();
String newUA = "Mozilla/5.0 (Linux; Android 11; SM-G988N Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.105 Mobile Safari/537.36"; // 示例为常见Android Chrome UA
settings.setUserAgentString(newUA);
注意事项:
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
settings.setAcceptThirdPartyCookies(true);
由于直接修改HTTPS请求的标识符或绕过服务器的安全策略存在挑战且可能不合规,最佳途径是通过模拟标准浏览器行为或与服务提供方(交行)及平台方(钉钉)沟通来寻找官方支持或推荐的解决方案。同时,考虑到安全性和用户体验,所有变更都应在确保数据安全和隐私保护的前提下进行。
希望上述建议能帮助您解决问题。如果情况依旧,深入的技术排查可能需要更详尽的日志信息或与相关技术支持团队的协作。