Ошибка CORs при перехвате http-запросов из webView - PullRequest
0 голосов
/ 07 ноября 2019

В моем приложении у меня есть WebView, который размещен на сервере. И у меня есть метод overidden shouldInterceptRequest (), потому что я должен добавить заголовок Authourization с маркером Bearer к каждому запросу:

override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?):WebResourceResponse?{
                request?.let {
                       if(it.url.toString().trim().startsWith("https://someproxy.qwe.com")) {
                           val url = request.url.toString()
                           return getNewResponse(url,it.method)
                       }
                    }
                return null
            }

private fun getNewResponse(url: String,method: String): WebResourceResponse? {

//some skipped code for 

val request = Request.Builder()
                        .url(url.trim { it <= ' ' })
                        .addHeader("Authorization",token)
                        .method(method,null)
                        .build()

              response = httpClient.newCall(request).execute()

                val webResourceResponse = WebResourceResponse(
                        null,
                        response?.header("content-encoding", "utf-8"),
                        response?.body()?.byteStream()
                )

                return webResourceResponse
}

Мой HttpClient имеет "custom responseInterceptor", который проверяет все ответы на наличие ошибки "TOKEN_EXPIRED" и, если получентакая ошибка повторяет тот же запрос с обновленным токеном.


При просмотре журналов добавляются заголовки, я получаю правильный ответ от сервера и отправляю его обратно в WebView.

НО , веб-представление после получения ответа, возвращенного функцией shouldInpterceptRequest (), сообщает: «заблокировано политикой CORS : ответ на запрос предполетной проверки не прошелпроверка контроля доступа: на запрашиваемом ресурсе отсутствует заголовок ' Access-Control-Allow-Origin '. "

Когда я пытаюсь загрузить URL-адрес из папки android / assets, все работает какcharm, проблема возникает при перехвате запросов webView, чьи html и js размещены на сервере.

NO, проблема не на стороне сервера, потому что при выполнении запроса из браузера Chrome, после добавления заголовка вручнуюСерверы правильно реагируют. Я действительно застрял, любая помощь будет оценена ...!

...