【ご質問】
Cookieを引き継ぐ方法を教えてください。
【回答】
起動用のCurlアプレットをサーバ側JSPなどで動的に生成し、その動的に生成するコード内で
“set-insecure-http-cookie”プロシージャ等を利用してブラウザに付与したCookie情報を
書き出し、アプレット内で設定する方法等があります。
JSPでのコードサンプル(下記サンプル内の curlcode-dynamic-generate.jsp)
<%@ page import=”java.net.*” contentType=”text/vnd.curl.dcurl” %> <% // ログイン時に発行したJSESSIONIDがクライアントから送られてきています。 // その値を取得して変数に確保します。 Cookie[] cookies = request.getCookies(); Cookie cookie = new Cookie(“a”, “b”); if (cookies != null){ for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if (cookie.getName().equals(“JSESSIONID”)){ break; } } } %>{curl 8.0 applet} {curl-file-attributes character-encoding = “utf8”} {applet COM.YOUR-COMPANY.YOUR-PRODUCT.YOUR-APPLET, version = “1.2.3”, manifest = “manifest.mcurl”, resync-file = “”, {compiler-directives stringent? = true } }|| {applet xxx} 宣言の直後に、以後のセッションで使用できるように || 取得したJSESSIONIDの値をCookieに設定するCurlコード {def cookie = {HttpCookie “JSESSIONID”, “<%=cookie.getValue() %>“, path = “/mycook”}} {set-insecure-http-cookie {url “http://localhost:8080/mycook“}, cookie} || インポート文とインクルード文は必ず上記 |
上記デタッチトアプレットを生成するjspサンプルの場合、起動時のURLは次のようなものになります:
“curl://launch/https://your.server.com/your/applet/dir/curlcode-dynamic-generate.jsp”
また、インターネットエキスプローラ内で実行するCurlアプレットの場合、
{request-browser-resident-http}プロシージャを使うことでIEからCurlアプレットへクッキー情報の引継ぐことを実現可能です。
なお、インターネットエキスプローラを利用したウェブシステムからクッキー情報をCurlアプレット側に引継ぎたい場合、有効な期限付きクッキーを利用することで、自動的に引き継ぐことができます。この方法はChromeやEdgeなどのブラウザでは利用できません。