【Kotlin/Android】WebViewのクッキーの扱い方!CookieManager

【Kotlin/Android】WebViewのクッキーの扱い方!CookieManager

この記事からわかること

  • Kotlin/Android StudioWebView使い方
  • クッキー操作する方法
  • CookieManager使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Cookie(クッキー)とは?

Cookie(クッキー)とはサイトがブラウザに小さなデータを保存できる仕組みのことです。対象のデータは特定の形式のテキストベースで各ウェブブラウザの内部ストレージに保存されるため、ブラウザを閉じて再度開いても対象のデータが残存しています。

Cookieのデータ自体はレスポンスのヘッダー(Set-Cookie)に含まれてブラウザに送信されます。データ自体がそのまま流れるためセキュリティ面は担保されていないので認証情報や機密情報を扱う場合は注意が必要です。

Cookieの形式

Cookieのデータ形式は基本的にはkey=value形式のデータを;で区切った形式になります。


name=value; Expires=Wed, 09 Jun 2024 10:18:14 GMT; Path=/; Domain=example.com; Secure; HttpOnly

name=value

key=value形式で任意のキーと値を記述できます。例:sessionId=abc12

Expires=有効期限

クッキーの有効期限をGMT(Greenwich Mean Time)形式で指定します。

Max-Age=秒数

クッキーの有効期限を秒数で指定します。Max-Age=3600の場合は1時間になります。

Path=/

クッキーが有効なパスを指定します。Path=/の場合はサイト全体に適応されます。

Domain=ドメイン

クッキーを利用できるドメインを指定します。デフォルトでは、クッキーは作成されたドメインとそのサブドメインにのみ送信されます。

Secure

Secure属性はHTTPS接続でのみクッキーを送信するようにします。

HttpOnly

HttpOnly属性はJavaScriptからクッキーにアクセスできなくなります。

AndroidのWebViewでクッキーを操作する

AndroidのWebViewでクッキーを操作するにはCookieManagerクラスを使用します。使用方法は簡単でsetAcceptCookieでクッキーを有効にして、setCookieで保存したいデータを渡します。

保存されているクッキーはgetCookieで取得することができます。

// クッキーを有効化
val cookieManager = CookieManager.getInstance()
cookieManager.setAcceptCookie(true)

// クッキーを設定
val url = "https://appdev-room.com/"
cookieManager.setCookie(url, "name=ame")

webView.settings.javaScriptEnabled = true
webView.loadUrl(url)

// クッキーを取得
val cookies = cookieManager.getCookie(url)
Log.d("Cookies", "Cookies for $url: $cookies")

クッキーに値や属性セットする

クッキーに値や属性をセットするにはsetCookieメソッドを使用します。第一引数にセット対象のURLを、第二引数にセットしたいクッキー文字列を渡します。文字列をそのまま指定するので形式が崩れないように注意してください。

val cookieString = "sessionId=abc123; Max-Age=10; Path=/; Secure; HttpOnly"
cookieManager.setCookie(url, cookieString)

クッキーを削除する

クッキーを削除するにはremoveAllCookiesメソッドを使用します。別の方法として有効期限に過去の日付を指定することでクッキーを無効にすることも可能です。

cookieManager.removeAllCookies(null)

----- OR ------
// 過去の日付を設定することでクッキーを無効にする
val cookieString = "sessionId=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Path=/"
cookieManager.setCookie(url, cookieString)

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index