为什么这些 headers 在 Android WebView 中不起作用?
Why are these headers not working in Android WebView?
所以我正在设置 WebView 来显示合作伙伴网站。如果用户没有设置该功能。它会将他们重定向到我们的网站,因为他们已在我需要在请求 headers 中传递我们的身份验证令牌的设备上登录,我们的网站将自动记录他们。
它适用于 iOs,但我无法让它适用于 Android。我正在拦截重定向,如果是到我们的网站,我将添加身份验证 header。但它没有将用户登录到站点。它只显示我们的登录页面。代码如下。
webView?.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
if(!url!!.contains("ourwebsite.com/authenticate"))
return false
val am: AccountManager = AccountManager.get(context)
val token = am.getPassword(Application.getAccount())
val extraHeaders: MutableMap<String, String> = mutableMapOf()
extraHeaders.put(AUTH_KEY, token)
view?.loadUrl(url, extraHeaders)
return false
}
所以我们的服务器人员非常友好地为我添加了一些日志,我在记录的 headers
中看到了这一点
"auth-header": "some token",
当我添加 auth header 时,我添加了大写字母(因为这是服务器所要求的:
"Auth-Header"
显然 rom RFC 2616 - "Hypertext Transfer Protocol -- HTTP/1.1", Section 4.2, "Message Headers":
指出 header 不区分大小写。 :(
因此我们的服务器需要处理所有小写协议。
所以我正在设置 WebView 来显示合作伙伴网站。如果用户没有设置该功能。它会将他们重定向到我们的网站,因为他们已在我需要在请求 headers 中传递我们的身份验证令牌的设备上登录,我们的网站将自动记录他们。
它适用于 iOs,但我无法让它适用于 Android。我正在拦截重定向,如果是到我们的网站,我将添加身份验证 header。但它没有将用户登录到站点。它只显示我们的登录页面。代码如下。
webView?.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
if(!url!!.contains("ourwebsite.com/authenticate"))
return false
val am: AccountManager = AccountManager.get(context)
val token = am.getPassword(Application.getAccount())
val extraHeaders: MutableMap<String, String> = mutableMapOf()
extraHeaders.put(AUTH_KEY, token)
view?.loadUrl(url, extraHeaders)
return false
}
所以我们的服务器人员非常友好地为我添加了一些日志,我在记录的 headers
中看到了这一点"auth-header": "some token",
当我添加 auth header 时,我添加了大写字母(因为这是服务器所要求的:
"Auth-Header"
显然 rom RFC 2616 - "Hypertext Transfer Protocol -- HTTP/1.1", Section 4.2, "Message Headers":
指出 header 不区分大小写。 :(
因此我们的服务器需要处理所有小写协议。