为什么我的Android WebView向我显示403禁止错误

时间:2020-01-02 23:33:56

标签: android kotlin android-webview http-status-code-403

我在使我的网络视图正常工作时遇到麻烦

该网络视图应该显示此网址https://mcdonalds.de/deinfeedback,但是每当我尝试加载它时,我的onReceivedHttpError方法都会向我返回

403禁止进入

错误。它对于https://www.google.com之类的其他网址也很好,但是我似乎无法使其适用于该网址。最初,我认为它与ssl证书有关,但是从未调用过WebViewClient的onReceiveSslError。然后,我尝试将我的用户代理字符串更改为与我的移动浏览器中的字符串相同,但仍然返回相同的403错误

这是我的onCreate中处理WebView的部分

webViewDisplay.settings.builtInZoomControls = true
webViewDisplay.settings.displayZoomControls = false
webViewDisplay.settings.domStorageEnabled   = true
webViewDisplay.settings.javaScriptEnabled = true
webViewDisplay.settings.javaScriptCanOpenWindowsAutomatically = true
webViewDisplay.webViewClient = MyWebClient()

webViewDisplay.loadUrl(resources.getString(R.string.web_activation_url_main)) //https://www.mcdonalds.de/deinfeedback

这是我的WebViewClient

inner class MyWebClient : WebViewClient() {

        override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest): Boolean {
            Log.v(TAG, "Overriding Url to ${request.url.toString()}")
            return false //continues loading
        }


        override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler, error: SslError?) {
            Log.v(TAG, "Ssl Error")
            handler.proceed()  //handle error
        }


        override fun onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse) {
            Log.v(TAG, "Http Error   ${errorResponse.statusCode} ${errorResponse.reasonPhrase}")
            super.onReceivedHttpError(view, request, errorResponse)
        }

    }

我希望有人可以帮助我


编辑:

不是403错误。我已将布局的高度设置为wrap_content,这使webView在某些站点上自动包装。将其更改为match_parent可以修复它。 功劳归功于Dani

1 个答案:

答案 0 :(得分:0)

您确定仅是WebView问题吗?在桌面浏览器中执行此网址,得到一个403-并看到与我在android的WebView中完全相同的内容。换句话说,如果您看到的相同,我认为您可以放心地忽略该错误。如果您看到其他内容,请附加快照。

enter image description here

编辑:现在可以肯定了。

添加:

 @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
        override fun onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse) {
            Log.v("APP", "Http Error ${request?.url}   ${errorResponse.responseHeaders} ${errorResponse.reasonPhrase}")
            super.onReceivedHttpError(view, request, errorResponse)
        }

产生此: Http错误 https://s3-eu-west-1.amazonaws.com/automation.isc-mcd.svy.do--voc/public/de/.json {Transfer-Encoding = chunked,Server = AmazonS3,Access-Control-Allow-Origin = *,Access-Control-Allow-Methods = GET,Vary =来源,访问控制请求标头,访问控制请求方法,x-amz-request-id = AC63B0D940D45EDA,Access-Control-Max-Age = 3000,x-amz-id-2 = 7LKt0WZsaKdyYTQhN5cSmGSdUZMBR + D8mEaAOovorrV5jNJcS0CvNFb08K7QqnTkn4C73MfMWJI =,Date = Fri,03 Jan 2020 03:17:05 GMT,Content-Type = application / xml}禁止

请注意,这与导致桌面浏览器也禁止访问的请求完全相同。没有有害的副作用,可以忽略。