張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室.

Slides:



Advertisements
Similar presentations
分享人:張益源. 個人資料介紹 姓名:張益源 畢業:體育系 97 級 專長:田徑、籃球、游泳 任教學校:慈濟大學實驗國民小學 學校職務:體育兼資訊老師.
Advertisements

口臭不苦惱 清新口氣大作戰 口臭不只破壞人際的互動,更是 身體發出的警訊,不能輕忽。 康健雜誌 89 期文. 梁煙純 攝影.邱瑞金.
第 4 章 JSP 内置对象 本章主要内容:  内置对象的概念  内置对象的作用域和生命期  内置对象的作用和关系  内置对象的使用方法.
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象.
欢迎各位 Nice to Meet U.
资源平台应用培训 武汉市交通学校信息化建设指导委员会.
动态网站开发 【HTTP与网络基础】 李博杰
动态Web开发技术--JSP.
第3章 电子商务的技术基础 3.1 电子商务与计算机网络技术 3.2 电子商务与Web技术 3.3 电子数据交换(EDI)技术
104年度國立宜蘭大學新進主管研討 主計業務宣導說明
102年實施之高中職及五專多元入學(含免試入學)之招生機制
事件驱动的移动数据中心 广州舜飞信息科技有限公司 谭荣棉.
读者与图书馆 2009年春季版 总第 15 期 山 东 交 通 学 院 图 书 馆 2009年3月.
中国福建泉州 --历史文化名城.
2012级暑期放假安全教育 及宿舍搬迁工作布置会 北京化工大学理学院 辅导员:曹鼎 2013年6月6日.
张孝祥IT课堂 -深入体验Java Web开发内幕
第七章 电子商务系统的运营与维护.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
伺服器網路檢測與管理 資訊中心網路管理組 王裕仁 2006/06/29.
第十 章 XML与数据库的交换 10.1 概述 10.2 数据岛 10.3 XML数据源对象 10.4 数据集操作
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
第三章 使用XMLHttpRequest对象
在 线 考 试 系 统 的 设 计 学 生: 班 级: 指导老师:.
2015年云南财经大学图书馆 新生入馆教育考核试题 答题指南
認證與檔案上傳 學習目標 基本原理 資料庫連線與選擇 執行查詢 取回答案 SQL Injection.
一、登录界面 (一)登录方式 1、访问广东工程咨询网 ( 动态里,“咨询师登记工作”专栏 2、 IE地址栏中直接键入管理系统 地址(
Microsoft Application Center Test
Lab312.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
資訊安全-資料加解密 主講:陳建民.
Hello World 體驗實作第一個JSP程式.
第四章 網頁表單與資料傳遞.
PHP +MySQL快速入門 Lesson 4.
XSS & SQL Injection理論 2014/7/29 許子謙.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
張智星 台大資工系 多媒體檢索實驗室 第五章 自訂函數 張智星 台大資工系 多媒體檢索實驗室.
JavaScript 语言3 学习网站:心蕊设计
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session.
JavaScript 靜宜大學 資管系 楊子青.
認識FTP檔案傳輸協定 建立我的部落格 Archie檔案檢索服務 Google搜尋密技 歷久彌新的老朋友-BBS Skype網路電話
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第 6 章 Application、Session 物件與Cookie
13.1 用框架劃分工作區,方便演示資訊 13.2 使用連結及鎖定點連接資訊 13.3 使用列表及表單演示資訊
第一讲 J2EE基础 博和利初级培训 —开发技能.
張智星 台大資工系 MIR實驗室 第二十章 檔案與目錄 張智星 台大資工系 MIR實驗室.
張智星 台大資工系 多媒體檢索實驗室 第十二章 ASP基本介紹 張智星 台大資工系 多媒體檢索實驗室.
网 站 设 计 与 建 设 Website design and developments
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
章節速覧: 5-1 資訊安全與保護 5-2 電腦軟體授權與著作權.
架站實做—AppServ
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
張智星 台大資工系 多媒體檢索實驗室 第十一章 資料保護 張智星 台大資工系 多媒體檢索實驗室.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
蘇文峰牧師 第一届“小组长研习会” Session 2
1 Session对象的特性 Session 状态对象 Session 对象常用的方法有: Session 对象常用的属性有:
HTML 103 互動式網頁 助教:黃毓瑩.
(輕量化)中小學教師專業發展 線上課程學習平台
2.1 高職與私立學校註冊操作說明 (2015/9/15上線)
Unity回傳統計資訊程式說明: 填寫回傳資訊網址(theUrl)。
風能 主題:風能 班級:四環工一A 組員:林明哲 4980N047 江信宏 4980N079
TYPE B 3504A設定 使用瀏覽器連線到閘道器的ip 例如:
TYPE A 3702A設定 使用瀏覽器連線到閘道器的ip 例如:
黑龙江省科学基金 项目验收填报培训 黑龙江省计算中心 2015年09月.
W3C标准网页制作 主讲教师:张 涛.
便利商店公仔行銷之研究以7-ELEVEn Open小將為例
银川社保网上申报 宁夏人力资源和社会保障 网上服务大厅操作
Presentation transcript:

張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室

本章大綱 大綱 主題 本節說明如何使用 JavaScript 來讀寫小餅乾 (Cookies) ,以及如何使用小餅乾紀錄使用者的各種資料。 9-1:讀寫小餅乾 9-2:設定失效日期 9-3:相關技術細節

9-1:讀寫小餅乾 本小節介紹小餅乾的用途與用法。

用途 客戶端的 JavaScript 不能對客戶端的硬碟做任何存取的動作,以防止惡意程式碼破壞。 相關應用 儲存使用者的認證資料 儲存使用者線上購物的品名、數量與相關資訊(如購物車) 記錄使用者的偏好或瀏覽歷程(例如數位學習的紀錄) …

Cookie的優點 所有資料均存放在客戶端電腦,不會佔用伺服器硬碟空間。 簡單易用,使用客戶端的 JavaScript 或伺服器端的 程式語言(如 PHP 或 ASP 等) 即可對 Cookie 進行讀寫。

Cookie的缺點 客戶端可以完全關閉 Cookie的功能, JavaScript 與 Cookie 相關的程式碼就無法運作。

範例9-1 主題:檢查瀏覽器的 Cookie 功能是否啟動 連結:cookie01.htm (remote host, local host) 程式碼重點 說明 使用 navigator.cookieEnabled 來判斷客戶端的瀏覽器是否開啟 Cookie 。 各大瀏覽器都有關閉 Cookie 的功能 例如 IE 瀏覽器,可由「工具/網際網路選項/隱私權」進行設定 If navigator.cookieEnabled){ document.write(“Cookie 功能已經啟動!”); }

Cookie的存取 Cookie 通常以「name=value;expires=expDate;」字串形式存放在客戶端的硬碟。 name 代表 Cookie 的名稱,value 則是對應 Cookie 值,expDate 代表 Cookie 的有效期間。 若沒指定有效時間,則 Cookie 只會被儲存在記憶體中,使用者關掉瀏覽器或session 逾時後(預設值通常是 20 分鐘),Cookie 就被自動刪除。 還可以加上其它資訊,如 path=myPath,代表哪一些路徑下的網頁有權限讀取該 Cookie。 在 JavaScript 環境下,Cookie 是一個字串,存放在document.cookie變數。

範例9-2 主題:列出 Cookie 字串 連結: cookie011.htm (remote host, local host) 程式碼重點 說明 本範例印出document.cookie 中存放的Cookie。 有些瀏覽器會自動設定一些Cookie,例如微軟 IIS 伺服器會自動設定一些由亂數產生的Cookie(看來像是為了設定 Session ID)。 <script> document.write(document.cookie); </script>

範例9-3 主題:設定並顯示 Cookie 連結: cookie02.htm (remote host, local host) 程式碼重點 說明 將 document.cookie 加入 name=value 的新cookie。(若具有同樣 name 的cookie 已經存在,則取代之。 ) 使用escape()取代可能使程式出問題的字元。 <input type="button" value="寫入 Cookie“ onClick="document.cookie=escape(cookieName.value)+'='+escape(cookieValue.value); history.go(0)">

範例9-3 (II) 更多說明 使用 document.cookie=“aaa=bbb” 時,整個document.cookie字串並不會全部被代換成“aaa=bbb”,而是會加入“aaa=bbb”這個新的cookie。 如果原本就有名稱為 aaa 的cookie,則此 cookie 會被代換成 “aaa=bbb"。 如果再加入新 cookie 時,發現整體 cookie 已經超過最大容量限制,則依瀏覽器而定,可能會發生兩件事: 系統會剔除最舊的 cookie,來讓新 cookie 加入。 新的 cookie 完全無法加入。

範例9-4 主題:使用 escape() 編碼 連結: escape01.htm (remote host, local host) 程式碼重點 說明 存取 name 或 value 時,使用 escape() 及 unescape() 函數來進行編碼與解碼,可避開空格或其他可能造成錯誤之字元。 使用 escape() 對中文進行編碼,其結果是以 unicode 來表示的 16 進位字串。 onClick="target.value=escape(source.value)”

範例9-5 主題:cookieUtility.js (與Cookie相關的各種函數) 連結: cookieUtility.js (remote host, local host) 說明 包含了數種常用的基本函數: setCookie: 加入一個 cookie。 delCookie: 刪除一個 cookie。 getCookie: 經由名稱來找到一個 cookie。 showAllCookie: 顯示 document.cookie。 getCookieValueByIndex: 經由索引值找某 cookie。 listCookie: 將所有 cookie 列在一個表格中。

9-2:設定失效日期 本小節說明Cookie的刪除、修改、查詢,以及失效時間的設定。

範例9-6 主題:小餅乾試驗場(設定、移除、查詢) 連結:cookie03.htm (remote host, local host) 程式碼重點 說明 呼叫幾個函數(setCookie(), delCookie(), getCookie()等)對 Cookie 進行處理,這些函數均定義於cookieUtility.js。 onClick=“setCookie(cookieName1.value, cookieValue1.value); history.go(0)" onClick="delCookie(cookieName2.value); history.go(0)" onClick="cookieValue3.value=getCookie(cookieName3.value)"

設定Cookie的失效日期 若無設定失效日期… 設定失效日期後… 沒指定期限, Cookie 只被存放在記憶體中,若使用者關閉瀏覽器視窗,Cookie 的資料將消失。 使用者不再存取該網頁,則 Cookie 也會在 Session Time-out (由伺服器設定,通常是 20 分鐘)後消失。 設定失效日期後… 可維持Cookie長久效力。 運作方式:失效日期前,會在瀏覽器載入網頁時,存放於 document.cookie;若瀏覽器關閉,則新增的 Cookie 被存入硬碟中的特定檔案(隨瀏覽器不同而不同)。

刪除Cookie 做法 設定其失效日期,只要失效日期是早於現在的時間,Cookie 就會被刪除。 程式碼內容 function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime()-1); //設定 Cookie 的失效時間比目前時間還早 document.cookie=escape(name)+“=;expires=“+exp.toGMTString(); //重新設定 Cookie }

範例9-7 主題:利用 Cookie 記錄客戶拜訪網頁次數 連結:cookie04.htm (remote host, local host) 程式碼重點 說明 造訪網頁的計數資料是存放在名為 VisitCount 的 Cookie 之中。 利用getCookie搜尋使用者是否已瀏覽過網頁。 同一個目錄下的網頁,基本上可以共用 Cookie 的資訊。 count = getCookie(cookieName);

9-3:相關技術細節 本節針對 Cookie 的技術層次加以說明。

Cookie的相關發展 Cookie 的概念是由 Netscape 公司首先發展。 其主要目的是要克服 HTTP protocal 的「無狀態」(Stateless)特性。 「Stateless」是指在處理每一個用戶送來的 Request,伺服器並沒有任何紀錄之前是否有相關的 Request。 Cookie 的目的就是要記錄使用者之前在某一個特定網頁上的行為,以方便本次的瀏覽。

Netscape設計的 Cookie 經由 HTTP 的表頭資訊(Header)來傳送。 當用戶端對伺服器產生要求時,其中的表頭資訊「Cookie:」會將相關的 Cookie 送到伺服器端。 當伺服器將資訊傳回用戶端時,瀏覽器收到其中的表頭資訊「Set-Cookie:」,就會在用戶端設定相關的 Cookie。

標準HTTP Response Header 舉例 說明 「Set-Cookie:」指定要下載至使用者端的 Cookie 元素。 一般使用瀏覽器看不到這些資訊,若要看到這些資訊,可以使用 telnet。 HTTP/1.0 200 OK Date: Tuesday, 09-Nov-99 20:58:25 GMT Server: Open-Market-Secure-WebServer/2.0.5.RC0 MIME-version: 1.0 Security-Scheme: S-HTTP/1.1 Set-Cookie: USER=4wOm1zd2VlbmV5MTk5OQ; Path=/; Domain=.site.com; expires=Wed, 01-Jan-2031 01:01:01 GMT

如何觀看檔頭資訊 步驟 在DOS視窗輸入: telnet neural.cs.nthu.edu.tw 80 按下 Enter 鍵後,接著輸入: HEAD /jang/ HTTP/1.0

設定 Cookie 的兩個方式 由伺服器直接對用戶進行設定 此部分的 Cookie 資訊就是直接放在由伺服器回傳的表頭。 由用戶端的 JavaScript 進行設定 此部分是經由用戶端的 JavaScript 來進行設定。

Cookie 設定流程說明 伺服器 用戶端 Request: 經由表頭資訊 傳送相關的Cookie 到伺服器 JavaScript: 使用戶端的程式碼 來處理Cookie 伺服器 用戶端 Response: 經由表頭資訊 讓瀏覽器設定 相關的Cookie

Cookie 對網頁的作用 無論是 Request 或是 Response,Cookie 都會被帶在表頭資訊中傳送。 在 Request 時,瀏覽器會網頁以前留下來的 Cookie 以表頭資訊一起傳到伺服器。 在 Response 時,伺服器將網頁必須設定的 Cookie 以表頭資訊送到伺服器。我們可以使用 PHP 或 ASP 來控制由伺服器端指定寫入的 Cookie 當網頁送到用戶端時,我們可以使用 JavaScript 來指定 Cookie 的讀寫。