Android WebView拒绝应用样式表,网页加载后CSS失效求助
问题描述
WebView加载URL代码:
webviewContent.apply { with(settings) { javaScriptEnabled = true loadsImagesAutomatically = true useWideViewPort = true loadWithOverviewMode = true } webViewClient = tncWebClient val map: MutableMap<String, String> = HashMap() map["X-EMP"] = "xlg4R7" map["Content-type"] = "text/javascript" loadUrl(getWebUrl(), map) }
LogCat错误信息:
chromium: [INFO:CONSOLE(0)] "Refused to apply style from 'https://****style.css' because its MIME type ('') is not a supported stylesheet MIME type, and strict MIME checking is enabled."
网站可正常加载,但CSS样式未生效,寻求解决办法。
解决方案
1. 移除请求头中的Content-type配置
你在请求头里强制设置了Content-type: text/javascript,这会让所有请求(包括CSS文件)都使用该MIME类型,导致服务器返回的CSS文件无法被WebView正确识别。直接删除这一项即可:
val map: MutableMap<String, String> = HashMap() map["X-EMP"] = "xlg4R7" // 移除该行:map["Content-type"] = "text/javascript" loadUrl(getWebUrl(), map)
2. 检查服务器端MIME类型配置
如果移除请求头后问题仍存在,需要确认服务器返回CSS文件时,是否正确设置了Content-Type: text/css响应头。多数情况下,这类问题是服务器未正确配置静态资源的MIME类型导致的。
3. 临时关闭严格MIME检查(不推荐用于正式环境)
若上述方法都无效,可尝试关闭WebView的严格MIME检查以验证问题,但这会带来安全风险,仅建议临时测试:
with(settings) { // 保留原有设置 javaScriptEnabled = true loadsImagesAutomatically = true useWideViewPort = true loadWithOverviewMode = true // 关闭严格MIME检查相关设置 allowFileAccess = true @Suppress("DEPRECATION") allowUniversalAccessFromFileURLs = true if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW } }
内容的提问来源于stack exchange,提问作者Renz Manacmol
相关产品推荐
相关产品推荐

