AgentWeb https网页嵌套http图片 403问题 防盗链 跨域问题

316 阅读1分钟

首先看报错

    AgentWebConfig.debug();

浏览器打开 edge://inspect/#devices edge chrome 改协议部分

得到报错信息如下

Failed to load resource: the server responded with a status of 403 ()

解决办法 原来代码

mAgentWeb = AgentWeb.with(this)
.setAgentWebParent(findViewById(R.id.web_parent_layout), new LinearLayout.LayoutParams(-1, -1))
.closeIndicator()// 使用默认进度条
.setWebChromeClient(mWebChromeClient)
.setWebViewClient(mWebViewClient)
.setMainFrameErrorView(R.layout.agentweb_error_page, -1)
.setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
.setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.ASK)//打开其他应用时,弹窗咨询用户是否前往其他应用
.addJavascriptInterface("android", onJsInterface)
.interceptUnkownUrl() //拦截找不到相关页面的Scheme
.createAgentWeb()
.ready()
.go(getUrl());

改成

AgentWeb.PreAgentWeb preAgentWeb = AgentWeb.with(this)
        .setAgentWebParent(findViewById(R.id.web_parent_layout), new LinearLayout.LayoutParams(-1, -1))
        .closeIndicator()// 使用默认进度条
        .setWebChromeClient(mWebChromeClient)
        .setWebViewClient(mWebViewClient)
        .setMainFrameErrorView(R.layout.agentweb_error_page, -1)
        .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
        .setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.ASK)//打开其他应用时,弹窗咨询用户是否前往其他应用
        .addJavascriptInterface("android", onJsInterface)
        .interceptUnkownUrl() //拦截找不到相关页面的Scheme
        .createAgentWeb();
//AgentWeb框架默认加了USERAGENT_UC 这个东西 有些图片会被服务器拦截 导致无法加载 
preAgentWeb.get().getAgentWebSettings().getWebSettings().setUserAgentString(preAgentWeb.get().getAgentWebSettings().getWebSettings()
        .getUserAgentString()
        .replace(USERAGENT_UC, ""));
mAgentWeb = preAgentWeb.go(getUrl());

在go之前修改不需要ready了因为preAgentWeb.get()的时候里面做了

为什么需要在go之前修改?

因为之后修改的话所有的js交互方法都不执行了 为什么我也不知道