約 5,342,643 件
https://w.atwiki.jp/jasagiri/pages/68.html
RFC:http //www5d.biglobe.ne.jp/~stssk/rfcjlist.html 規格対応エレメント表 http //meiert.com/en/indices/html-elements/ html5 http //www.html5.jp/ URI-Templates http //bitworking.org/projects/URI-Templates/ http //builder.japan.zdnet.com/sp/firefox-3-for-developer-2008/ StatusCode http //www.studyinghttp.net/status_code http //thoughtpad.net/alan-dean/http-headers-status.html http //d.hatena.ne.jp/IwamotoTakashi/20090429/p1 REST 何がRESTを良くするか:http //www.infoq.com/jp/news/2008/11/rest-api RESTfullなアプリケーションを記述する:http //www.infoq.com/jp/articles/subbu-allamaraju-rest REST API デザイン http //www.25hoursaday.com/weblog/2008/10/24/RESTAPIDesignInventMediaTypesNotProtocolsAndUnderstandTheImportanceOfHyperlinks.aspx OpenID:http //code.google.com/p/openidengine/ :http //www.atmarkit.co.jp/fsecurity/rensai/openid01/openid01.html :http //www.goodpic.com/mt/archives2/2008/01/openid_oauth.html :http //d.hatena.ne.jp/lyokato/20080816/1218866900 OAuth:http //www.atmarkit.co.jp/fsecurity/special/106oauth/oauth01.html
https://w.atwiki.jp/gokuu/pages/12.html
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http //www.w3.org/1999/xhtml" lang="ja" xml lang="ja" head meta http-equiv="Content-Type" content="text/html; charset=utf-8" / meta http-equiv="Content-Style-Type" content="text/css; charset=UTF-8" / meta http-equiv="content-script-type" content="text/javascript" / title tesssttttttttttttttttt - トップページ /title link rel="start" href="/gokuu/" / link rel="stylesheet" type="text/css" href="http //www39.atwiki.jp/_skin/base_021mandarin.css" media="all" / link rel="alternate" href="/gokuu/rss10.xml" type="application/rss+xml" title="RSS" / style type="text/css" media="screen" !-- body,html { margin 0 !important; padding 0 !important; } .box { zoom 100%; } .box after { clear both; content "."; display block; height 0; visibility hidden; } .hidden { display none; } .disableLink { color #777 !important; cursor default !important; display block !important; line-height 1.2 !important; margin 0 !important; padding 3px 1em !important; white-space nowrap !important; } div.headBar { background-color #e8e8e8 !important; border 2px solid !important; border-color #f0f0f0 #c8c8c8 #c8c8c8 #f0f0f0 !important; color #000000 !important; font-family "MS Sans Serif", Arial, sans-serif !important; font-size 13px !important; font-style normal !important; font-weight normal !important; line-height 1.2 !important; margin 0 !important; padding 4px 2px 4px 2px !important; text-align left !important; text-decoration none !important; } div.headBar a { background transparent none repeat scroll 0% !important; font-weight normal !important; line-height 1.2 !important; text-align left !important; text-decoration none !important; } div.headBar a.headmenuButton { border 1px solid #e8e8e8 !important; color #000000 !important; color #000000 !important; cursor default !important; font-family "MS Sans Serif", Arial, sans-serif !important; font-size 13px !important; font-style normal !important; font-weight normal !important; left 0px; line-height 1.2 !important; margin 1px !important; padding 2px 6px 2px 6px !important; position relative !important; text-align left !important; text-decoration none !important; top 0px; z-index 30; } div.headBar a.headmenuButton hover, div.headBar ul li a.haeder_ul hover { background-color transparent !important; border-color #f0f0f0 #909090 #909090 #f0f0f0 !important; color #000000 !important; } div.headBar a.headmenuButtonActive, div.headBar a.headmenuButtonActive hover { background-color #2c8bec !important; border-color #a6a6a6 #f0f0f0 #f0f0f0 #a6a6a6 !important; color #ffffff !important; left 1px; top 1px; } div.headmenu { background-color #e8e8e8 !important; border 2px solid !important; border-color #f0f0f0 #c8c8c8 #c8c8c8 #f0f0f0 !important; color #000000 !important; font-family "MS Sans Serif", Arial, sans-serif !important; font-size 13px !important; font-style normal !important; font-weight normal !important; left 0px; line-height 1.2 !important; margin 0 !important; padding 0px 1px 1px 0px !important; position absolute; text-align left !important; text-decoration none !important; top 0px; visibility hidden; z-index 31; } div.headmenu a.headmenuItem { color #000000 !important; color #000000 !important; cursor default !important; display block; font-family "MS Sans Serif", Arial, sans-serif !important; font-size 13px !important; font-style normal !important; font-weight normal !important; line-height 1.2 !important; margin 0 !important; padding 3px 1em !important; text-decoration none !important; white-space nowrap !important; } div.headmenu a.headmenuItem img{ display inline !important; vertical-align middle !important; border 0 !important; padding 0 !important; margin 0 .5em 0 0 !important; } div.headmenu a.headmenuItem span.headmenuItemArrow{ margin-right -.75em !important; } div.headmenu a.headmenuItem span.headmenuItemText { margin-right -.75em !important; margin-left 0 !important; padding-left 0 !important; } div.headmenu a.headmenuItem hover, div.headmenu a.headmenuItemHighlight { background-color #2c8bec !important; color #ffffff !important; } div.headmenu div.headmenuItemSep { border-bottom 1px solid #f0f0f0 !important; border-top 1px solid #909090 !important; margin 4px 2px !important; padding 0 !important; } div.headBar ul { line-height 26px !important; list-style-image none !important; list-style-position outside !important; list-style-type none !important; margin 0 !important; padding 0pt !important; position absolute !important; right 0pt !important; top 0px !important; } * html div.headBar ul li a.haeder_ul { top 6px !important; } div.headBar ul li { background-image none !important; background-position 0 !important; background-repeat no-repeat !important; float left !important; line-height 26px !important; list-style-image none !important; list-style-type none !important; margin 0pt !important; padding 0pt !important; position relative !important; } div.headBar ul li a.haeder_ul { border 1px solid #e8e8e8 !important; color #000000 !important; color #000000 !important; cursor default !important; font-size 13px !important; font-style normal !important; font-weight normal !important; left 0px; margin 1px !important; padding 2px 6px 2px 6px !important; position relative !important; top 0px; z-index 30; } div.headBar ul li a.haeder_ul active { background-color #2c8bec !important; color #ffffff !important; } div.headBar ul li a.mooter_link { margin-right .2em !important; } div.headBar ul li a.mooter_link img{ vertical-align middle !important; } div.headBar ul li form { display inline !important; line-height 25px !important; margin 0pt !important; padding 0pt !important; } div.headBar ul li input { display inline !important; font-size 13px !important; margin 0 !important; padding 0 !important; margin-right .2em !important; } div.headBar ul li input.submit { background ButtonFace !important; border 2px outset ButtonFace !important; color ButtonTex !importantt; cursor default !important; font-weight normal !important; line-height normal !important; padding 0px 3px !important; text-align center !important; white-space pre !important; } div#headBarWrapper{ display block !important; margin 0 !important; padding 0 !important; } -- /style link rel="alternate" type="application/x-wiki" title="トップページ を編集する" href="http //www39.atwiki.jp/gokuu/editx/1.html" / style type="text/css" media="screen" !-- #ads{visibility visible !important; display block !important;}#ad{visibility visible !important; display block !important;} -- /style link rel="alternate" href="http //www39.atwiki.jp/gokuu/rss10_new.xml" type="application/rss+xml" title="新規作成ページRSS" / /head body id="atwiki-jp" a id="atwiki-jp-top" name="atwiki-jp-top" style="display inline;line-height 0;border none;margin 0;padding 0;" /a !-- google_ad_section_start(weight=ignore) -- !-- Head Bar -- script src="/_js/headBar.js" type="text/javascript" !-- -- /script div class="box" id="headBarWrapper" div class="headBar" style="height 16px !important;-moz-box-sizing content-box ! important;" a class="headmenuButton" href="javascript void(0);" onclick="return headmenuButtonClick(event, hb_fileMenu );" onmouseover="headmenuButtonMouseover(event, hb_fileMenu );" @wikiメニュー /a a class="headmenuButton" href="javascript void(0);" onclick="return headmenuButtonClick(event, hb_editMenu );" onmouseover="headmenuButtonMouseover(event, hb_editMenu );" 編集 /a a class="headmenuButton" href="javascript void(0);" onclick="return headmenuButtonClick(event, hb_viewMenu );" onmouseover="headmenuButtonMouseover(event, hb_viewMenu );" 表示 /a a class="headmenuButton" href="javascript void(0);" onclick="return headmenuButtonClick(event, hb_toolsMenu );" onmouseover="headmenuButtonMouseover(event, hb_toolsMenu );" ツール /a a class="headmenuButton" href="javascript void(0);" onclick="return headmenuButtonClick(event, hb_helpMenu );" onmouseover="headmenuButtonMouseover(event, hb_helpMenu );" ヘルプ /a a class="headmenuButton" href="javascript void(0);" onclick="return headmenuButtonClick(event, hb_socialMenu );" onmouseover="headmenuButtonMouseover(event, hb_socialMenu );" ブックマーク登録 /a a class="headmenuButton" href="javascript void(0);" onclick="return headmenuButtonClick(event, hb_rssMenu );" onmouseover="headmenuButtonMouseover(event, hb_rssMenu );" RSS登録 /a div style="position absolute;top 6px;right 2px;" a href="http //www39.atwiki.jp/gokuu/mypage" title="設定" class="headmenuButton" 設定 /a a href="http //www39.atwiki.jp/gokuu/logout/1.html" title="ログアウト (gokuu)" class="headmenuButton" ログアウト (gokuu) /a /div /div /div !-- -- !-- -- div id="hb_fileMenu" class="headmenu" onmouseover="headmenuMouseover(event)" a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/new/%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8" 新規ページ作成 /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/copy/" すでにあるページをコピーして新規ページを作成 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/bbsquote/" スレッドフロート型掲示板から引用して新規ページ作成(α版) /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/rssquote/" ブログの内容から引用して新規ページ作成(α版) /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/upmake/" ファイルをアップロードして新規ページ作成(α版) /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/webquote/" 他のホームページから引用して新規ページ作成(α版) /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //atpages.jp/" [PR] 無料ホームページ @PAGES /a a class="headmenuItem" href="http //atpne.jp/" [PR] 無料SNSレンタル @PNE /a a class="headmenuItem" href="http //atbb.jp/" [PR] 無料フォーラム型掲示板レンタル @BB /a a class="headmenuItem" href="http //atbbs.jp/" [PR] 選べる無料掲示板 @BBS /a a class="headmenuItem" href="http //atchs.jp/" [PR] 2ch型無料レンタル掲示板 @chs /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //atwiki.jp/l/" @wikiで新規wikiを作成 /a /div !-- -- div id="hb_editMenu" class="headmenu" onmouseover="headmenuMouseover(event)" a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/editx/1.html" このページを編集 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/editxx/1.html" このページを編集(メニュー非表示編集;α) /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/copy2/1.html" このページをコピーして新規ページを作成 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/renamex/1.html" このページのページ名を変更 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/chkind/1.html" このページの編集モードを変更 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/chmod/1.html" このページの閲覧/編集権限の変更 /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/upload/1.html" このページにファイルをアップロード /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //atwiki.jp/ftp/" target="_blank" このウィキにファイルをアップロード(FTP機能/管理者のみ利用可) /a div class="headmenuItemSep" /div a class="headmenuItem" href="/gokuu/edit/%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC flag=onlymain" メニューを編集(メニュー部分は非表示で編集) /a /div !-- -- div id="hb_viewMenu" class="headmenu" onmouseover="headmenuMouseover(event)" a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/diffx/1.html" このページの最新版変更点 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/backupx/1/list.html" このページの編集履歴(バックアップ) /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/ref/1.html" このページへのリンク元 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/trackback/1.html" このページへのトラックバック /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/pages/1.pdf" このページをPDFで表示(α版) /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/list" このwikiのページ一覧 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/?cmd=backup amp;action=list" 編集履歴(バックアップ)のあるページ一覧 /a a class="headmenuItem" href="http //www39.atwiki.jp/gokuu/tag" このwikiのタグ一覧 /a a class="headmenuItem" href="/gokuu/rss10.xml" img src="http //img.atwiki.jp/_skin/h/feed.png" alt="このwikiの更新情報RSS" / このwikiの更新情報RSS /a a class="headmenuItem" href="/gokuu/rss10_new.xml" img src="http //img.atwiki.jp/_skin/h/feed.png" alt="このwikiの新着ページRSS" / このwikiの新着ページRSS /a /div !-- -- div id="hb_toolsMenu" class="headmenu" onmouseover="headmenuMouseover(event)" a class="headmenuItem" href="/gokuu/search" このwiki内を検索 /a a class="headmenuItem" href="#" onclick="return false;" onmouseover="headmenuItemMouseover(event, hb_toolsMenu2 );" span class="headmenuItemText" @wikiパーツ /span span class="headmenuItemArrow" #x25B6; nbsp; /span /a a class="headmenuItem" href="#" onclick="return false;" onmouseover="headmenuItemMouseover(event, hb_toolsMenu3 );" span class="headmenuItemText" @wiki便利ツール /span span class="headmenuItemArrow" #x25B6; nbsp; /span /a a class="headmenuItem" href="/gokuu/contact" このwikiの管理者に連絡 /a /div !-- -- div id="hb_helpMenu" class="headmenu" onmouseover="headmenuMouseover(event)" a class="headmenuItem" href="http //sns.atfb.jp/view_community2.php?no=112" @wiki助け合いコミュニティ /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //atwiki.jp/l/" wiki(ウィキ)って何? /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //www33.atwiki.jp/atwikibeginner" 初心者ガイド /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //www1.atwiki.jp/guide/" ご利用ガイド /a a class="headmenuItem" href="http //www1.atwiki.jp/guide/pages/21.html" 良くある質問 /a a class="headmenuItem" href="http //www1.atwiki.jp/guide/pages/32.html" プラグイン一覧 /a a class="headmenuItem" href="http //www1.atwiki.jp/guide/pages/20.html" 編集モードの違いについて /a a class="headmenuItem" href="http //www1.atwiki.jp/guide/pages/18.html" 不具合や障害を見つけたら /a a class="headmenuItem" href="http //www1.atwiki.jp/guide/pages/36.html" 管理・設定マニュアル /a /div !-- -- div id="hb_socialMenu" class="headmenu" onmouseover="headmenuMouseover(event)" a class="headmenuItem" href="#" onclick="onw( http //b.hatena.ne.jp/append?http //www39.atwiki.jp/gokuu/pages/1.html );" はてなブックマークする /a a class="headmenuItem" href="#" onclick="onw( http //bookmark.fc2.com/user/post?url=http //www39.atwiki.jp/gokuu/pages/1.html amp;title=tesssttttttttttttttttt%20-%20%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8 );" FC2ブックマークに追加 /a a class="headmenuItem" href="#" onclick="onw( http //clip.livedoor.com/clip/add?link=http //www39.atwiki.jp/gokuu/pages/1.html amp;title=tesssttttttttttttttttt%20-%20%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8 );" Livedoor クリップに追加 /a a class="headmenuItem" href="#" onclick="onw( http //bookmarks.yahoo.co.jp/bookmarklet/showpopup?t=tesssttttttttttttttttt%20-%20%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8 amp;u=http //www39.atwiki.jp/gokuu/pages/1.html amp;opener=bm amp;ei=UTF-8 );" Yahoo!ブックマークに登録 /a a class="headmenuItem" href="#" onclick="onw( http //del.icio.us/post?url=http //www39.atwiki.jp/gokuu/pages/1.html amp;title=tesssttttttttttttttttt%20-%20%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8 );" del.icio.usに追加 /a /div !-- -- div id="hb_rssMenu" class="headmenu" onmouseover="headmenuMouseover(event)" a class="headmenuItem" href="#" onclick="onw( http //r.hatena.ne.jp/append/http //www39.atwiki.jp/gokuu/rss10.xml );" はてなRSSに追加 /a a class="headmenuItem" href="#" onclick="onw( http //reader.livedoor.com/subscribe/http //www39.atwiki.jp/gokuu/rss10.xml );" livedoor ReaderにRSSフィードを登録 /a a class="headmenuItem" href="#" onclick="onw( http //e.my.yahoo.co.jp/config/jp_promo_content?.module=jp_rss amp;.url=http //www39.atwiki.jp/gokuu/rss10.xml );" Yahoo!にRSSフィードを登録 /a a class="headmenuItem" href="#" onclick="onw( http //www.bloglines.com/sub/http //www39.atwiki.jp/gokuu/rss10.xml );" BloglinesにRSSフィードを登録 /a a class="headmenuItem" href="#" onclick="onw( http //www.newsgator.com/ngs/subscriber/subext.aspx?url=http //www39.atwiki.jp/gokuu/rss10.xml );" NewsGator OnlineにRSSフィードを登録 /a a class="headmenuItem" href="#" onclick="onw( http //fusion.google.com/add?feedurl=http //www39.atwiki.jp/gokuu/rss10.xml );" GoogleパーソナライズドホームページにRSSを追加 /a /div !-- -- !-- -- !-- Submenus. -- div id="hb_toolsMenu2" class="headmenu" a class="headmenuItem" href="/gokuu/jsparts" @wikiパーツ:あなたのサイトにWikiデータを簡単表示! /a div class="headmenuItemSep" /div a class="headmenuItem" href="/gokuu/jsparts/recent" 最近更新したページの一覧を表示する /a a class="headmenuItem" href="/gokuu/jsparts/newcreate" 最近作成したページの一覧を表示する /a a class="headmenuItem" href="/gokuu/jsparts/search" このwiki内を検索するフォームを表示する /a a class="headmenuItem" href="/gokuu/jsparts/tagcloud" このwikiのタグクラウドを表示する /a a class="headmenuItem" href="/gokuu/jsparts/autolink" 自動リンク辞書を利用する /a /div !-- -- div id="hb_toolsMenu3" class="headmenu" a class="headmenuItem" href="http //atwiki.jp/tools/" target="_blank" @wiki便利ツール:トップページ /a div class="headmenuItemSep" /div a class="headmenuItem" href="http //atwiki.jp/tools/rssmaker.html" target="_blank" RSSかんたん作成 /a a class="headmenuItem" href="http //atwiki.jp/tools/rssnavimaker.html" target="_blank" 興味キーワードをチェック!!(RSSナビ) /a a class="headmenuItem" href="http //atwiki.jp/tools/blogrssmaker.html" target="_blank" いろんなblogのRSSかんたん作成ページ /a a class="headmenuItem" href="http //atwiki.jp/tools/a.php" target="_blank" アマゾン商品検索(簡単アフィリエイト) /a a class="headmenuItem" href="http //atwiki.jp/tools/quote.html" target="_blank" wikiに株式情報(日本)を表示 /a a class="headmenuItem" href="http //atwiki.jp/tools/quote2.html" target="_blank" wikiに株式情報(中国)を表示 /a a class="headmenuItem" href="http //atwiki.jp/tools/html.html" target="_blank" かんたんHTML直接入力 /a a class="headmenuItem" href="http //atwiki.jp/tools/qa.html" target="_blank" Q amp;Aサイトかんたん連携作成 /a a class="headmenuItem" href="http //atwiki.jp/tools/kawase.html" target="_blank" wikiに為替情報を表示 /a a class="headmenuItem" href="http //atwiki.jp/tools/hatena.html" target="_blank" はてなアンテナと簡単連携 /a /div !-- -- !-- -- !-- /Head Bar -- !-- google_ad_section_end -- div id="atwiki-jp-bg2" div id="container" div id="banner" div id="bannerLeft" div id="atwiki-jp-bg1" /div /div div id="bannerRight" h1 class="sitename" a href="/gokuu/" title="tesssttttttttttttttttt" tesssttttttttttttttttt /a /h1 h2 class="title" a href="http //www39.atwiki.jp/gokuu/pages/1.html" title="トップページ (1m)" トップページ /a /h2 /div /div div id="content" div id="leftColumn" div id="leftColumnTop" div id="menu" !--@@@@@-- div |- a href="http //www39.atwiki.jp/gokuu/pages/1.html" title="トップページ (5m)" トップページ /a br / |- a href="http //www39.atwiki.jp/gokuu/pages/8.html" title="プラグイン (15h)" プラグイン紹介 /a br / |- a href="http //www39.atwiki.jp/gokuu/pages/11.html" title="css (1m)" css /a br / |- a href="http //www39.atwiki.jp/gokuu/?page=html" html /a br / |- a href="http //www39.atwiki.jp/gokuu/?page=a" a /a br / |- a href="http //www39.atwiki.jp/gokuu/?page=b" b /a br / |- a href="http //www39.atwiki.jp/gokuu/?page=c" c /a br / |- a href="http //www39.atwiki.jp/gokuu/pages/2.html" title="メニュー (0s)" メニュー /a br / |- a href="http //www39.atwiki.jp/gokuu/?page=%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC2" メニュー2 /a br / /div hr / /div /div div id="leftColumnBottom" /div /div !-- BEGIN CONTENT AREA -- div id="rightColumn" !--- h3 class="title" a href="http //www39.atwiki.jp/gokuu/pages/1.html" title="トップページ (1m)" トップページ /a /h3 -- div class="text" div id="body" !--@@@@@-- div togasidead br / /div /div div class="ads" br / [ スポンサード リンク ] br style="display inline; " / script type="text/javascript" !-- ad_client = 72376; ad_start_count = 1; ad_end_count = 4; ad_total = 4; ad_format = "v336x66"; ad_width = 336; ad_height = 264; color_border = "FFFFFF"; color_bg = "FFFFFF"; color_link = "3D81EE"; color_url = "3D81EE"; color_text = "7F7F7F"; //-- /script script type="text/javascript" src="http //ad.pitattomatch.com/js/advertise.js" /script /div div id="body_footer" /div div id="menuarea" hr / a href="http //www39.atwiki.jp/gokuu/editx/1.html" title="このページを編集する" このページを編集する /a nbsp; nbsp; a href="http //www39.atwiki.jp/gokuu/trackback/1.html" title="トラックバック" トラックバック(0) /a nbsp; nbsp; a href="http //www39.atwiki.jp/gokuu/ref/1.html" title="リンク元" リンク元(0) /a /div div id="editmenu" !-- 編集用メニュー -- !-- google_ad_section_start(weight=ignore) -- | a href="http //www39.atwiki.jp/gokuu/new/%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8" title="新しいページ" 新しいページ /a | a href="http //www39.atwiki.jp/gokuu/search" title="検索" 検索 /a | a href="http //www39.atwiki.jp/gokuu/list" title="ページ一覧" ページ一覧 /a | a href="http //www39.atwiki.jp/gokuu/rss" title="RSS" RSS /a | a href="http //atwiki.jp/guide/" title="@ウィキご利用ガイド" @ウィキご利用ガイド /a | a href="http //www39.atwiki.jp/gokuu/contact" title="管理者にお問合せ" 管理者にお問合せ /a !-- google_ad_section_end -- br / !-- google_ad_section_start(weight=ignore) -- | a href="http //www39.atwiki.jp/gokuu/mypage" title="設定" 設定 /a |ログイン済み ( gokuu ) | a href="http //www39.atwiki.jp/gokuu/logout/1.html" title="ログアウト" ログアウト /a | !-- google_ad_section_end -- !-- 編集メニューリストフォーム -- !-- google_ad_section_start(weight=ignore) -- select onchange="location.href=this.options[this.selectedIndex].value" option 以下から選択してください /option option value="" ------------------------- /option option value="http //www39.atwiki.jp/gokuu/editx/1.html" このページを編集 /option option value="http //www39.atwiki.jp/gokuu/renamex/1.html" ページ名変更 /option option value="http //www39.atwiki.jp/gokuu/diffx/1.html" 差分 /option option value="http //www39.atwiki.jp/gokuu/backupx/1/list.html" 編集履歴 /option option value="http //www39.atwiki.jp/gokuu/upload/1.html" アップロード /option option value="" ------------------------- /option option value="http //www39.atwiki.jp/gokuu/new/%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8" 新しいページ /option option value="http //www39.atwiki.jp/gokuu/list" ページ一覧 /option option value="http //www39.atwiki.jp/gokuu/jsparts" @wikiパーツ /option option value="http //www39.atwiki.jp/gokuu/search" 検索 /option option value="" ------------------------- /option option value="http //www39.atwiki.jp/gokuu/mypage" 設定 /option /select !-- google_ad_section_end -- /div div class="attach" /div div class="footnote" /div /div /div !--end of rightColumn-- !-- END CONTENT AREA -- div id="clear" /div /div !-- end of content -- /div !-- end of container-- div class="footer" hr / div id="recommend" !-- google_ad_section_start(weight=ignore) -- div style="font-size 8px;" おすすめリンク | a href="http //employment.en-japan.com/" 転職ならen /a | a href="http //consultant.en-japan.com/" 転職ならエン /a | a href="http //haken.en-japan.com/" 派遣ならen /a | a href="http //honkibaito.en-japan.com/" アルバイトならen /a | a href="http //gakusei.enjapan.com/" 就職ならen /a | a href="http //www.fotofoo.com/" デジカメプリント /a | a href="http //www.fotofoo.com/oper/post_nenga/" 年賀状 /a | a href="http //www.fotofoo.com/square/square.html" ましかくプリント /a | a href="http //atpedia.jp" 辞書 /a | br / | a href="http //atchs.jp/" 2ch風無料掲示板 /a | a href="http //atword.jp/" 無料ブログ作成 /a | a href="http //sns.atfb.jp/" ソーシャルプロフィール /a | a href="http //atbbs.jp/" 無料掲示板 /a | a href="http //atbb.jp/" 高機能無料掲示板 /a | a href="http //atpages.jp/" 無料ホームページ /a | a href="http //atpne.jp/" 無料SNS /a | a href="http //php.atpedia.jp/" php /a | a href="http //atpocket.jp/" ポイント /a | /div !-- google_ad_section_end -- /div !-- google_ad_section_start(weight=ignore) -- a id="atwiki-jp-bottom" name="atwiki-jp-bottom" href="http //atwiki.jp/" title="@wiki - 無料レンタルウィキサービス" @wiki - 無料レンタルウィキサービス /a | a href="http //atwiki.jp/policy.html" title="@wikiのプライバシーポリシー" プライバシーポリシー /a !-- google_ad_section_end -- div style="font-size 9px;" Originally Designed by a href="http //www.gorotron.com" gorotron /a /div /div /div div id="extraDiv1" span /span /div div id="extraDiv2" span /span /div div id="extraDiv3" span /span /div div id="extraDiv4" span /span /div div id="extraDiv5" span /span /div div id="extraDiv6" span /span /div /body /html
https://w.atwiki.jp/naobe/pages/78.html
ネットワークに戻る RFC2616概要 HTTP/1.1 RFC6265概要 HTTP状態管理機構 パーセントエンコーディング(URLエンコード) URLで意味を持つコードと混同する日本語などのバイナリや特殊記号を16進形式にして、先頭に%を付加した文字に変換する。正確に言うと、非予約文字、予約文字以外を変換する。 項目 説明 非予約文字 ASCIIのコード範囲内の英字(大文字・小文字)、数字、ハイフン “-”、ピリオド “.”、アンダースコア “_”、チルダ “~” 予約文字 URIを表す符号。ASCIIのコード範囲内のコロン “ ”、スラッシュ “/”、疑問符 “?”、シャープ “#”、角括弧 “[”、“]”、単価記号 “@”、感嘆符 “!”、ドル記号・ペソ記号 “$”、アンパサンド “ ”、アポストロフィー・シングルクオート “ ”、丸括弧 “(”、“)”、アスタリスク “*”、正符号・加算記号 “+”、コンマ “,”、セミコロン “;”、等号 “=” name=%E8%8F%85%E7%9B%B4%E4%BA%BA UTF-8で、%E8%8F%85:菅, %E7%9B%B4 直, %E4%BA%BA 人 x-www-form-urlencoded(URLエンコード) POSTのフォームデータをエンコードする。%を付加する方式は、パーセントエンコーディングと同じ。パーセントエンコーディングの予約文字も変換している スペースは"+"に変換。Javaのソースを見ると、英数字、"-","_", ".","*"以外を変換する BASE64 Wikipediaより データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式 7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている A–Z, a–z, 0–9 までの62文字と、記号2つ (+ , /) 、さらにパディング(余った部分を詰める)のための記号として = が用いられる 76文字ごとに改行コードが入る Cookie Wikipediaより クッキーを設定する際、どの要求に対してクッキー情報を送り返すのか、URLの範囲を指定する。 規定値は、クッキーを設定したサーバに対するすべての要求であり、対象を広げることも狭めることもできる。ただし広げる場合でも、トップレベルドメインより狭い範囲でなければならない。 またクッキーの有効期限は、通常はブラウザを終了するまでだが、指定した期限まではブラウザを再度起動しても保持されるように設定することができる。有効期限の情報も、サーバからブラウザにクッキー情報を送信する段階で付加される。 無期限という設定は出来ない。 詳細: http //www.studyinghttp.net/cookies リクエスト 全てテキスト。行(CRLF)で区切られる。 フォーマット リクエストラインは1行。ヘッダは複数行。 大項目 小項目 説明 リクエストライン メソッド GET,POST,PUTなどのどれか。 リクエストURL リクエストを処理するURI プロトコルバージョン HTTPのバージョン。【例】HTTP/1.1 ヘッダ HOST リクエスト先のホスト名。必須項目 空行 POSTのときにヘッダの終了を示すために挿入される メッセージボディ POSTのときにリクエストデータを出力する 【例】 GET http //example.jp/31/31-001.php HTTP/1.1 リクエストライン Host example.jp --+ User-Agent Mozilla/5.0 (Windows NT 5.1; rv 2.0.1) Gecko/20100101 Firefox/4.0.1 | Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +-- ヘッダ Accept-Language ja,en-us;q=0.7,en;q=0.3 | Accept-Encoding gzip, deflate | Accept-Charset Shift_JIS,utf-8;q=0.7,*;q=0.7 | Keep-Alive 115 | Connection keep-alive | Referer http //example.jp/31/ --+ Accept-CharsetでShift-JISの品質係数が1であるため、サーバは、Shift-JISでエンコードしたメッセージを返す。 POST http //example.jp/31/31-003.php HTTP/1.1 リクエストライン Accept image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel ヘッダ Referer http //example.jp/31/31-002.php Accept-Language ja User-Agent Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Inf oPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Content-Type application/x-www-form-urlencoded Accept-Encoding gzip, deflate Host example.jp Content-Length 65 Connection Keep-Alive Pragma no-cache name=%E8%8F%85%E7%9B%B4%E4%BA%BA mail=kan@aaa.jp gender=%E7%94%B7 メッセージボディ Hostヘッダ HTTP1.1では必須。POST/GETでのURIにHOSTを指定していなかった場合、Virtualホストを特定できない。そのためHostヘッダにHOST名を指定する。URIにホスト名があって、Hostヘッダにもホスト名がある場合はURIを優先する。URIにホスト名を指定することを強制すれば良いような気がするが。 Referer ヘッダの一種。リンク元のURLを示す。あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのこと。 改変、削除される場合があるので正しくリンクを示しているとは限らない。 セキュリティ上、問題となるのは、URLが秘密情報を含んでいる場合。たとえば、URLがセッションIDを含んでいる場合。なりすましに使われる可能性がある。 【例】 GET http //example.jp/31/31-002.php HTTP/1.1 Accept image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, appl ication/msword, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms -xpsdocument, application/xaml+xml, */* Referer http //example.jp/31/ Accept-Language ja User-Agent Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Inf oPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Accept-Encoding gzip, deflate Host example.jp Connection Keep-Alive http //example.jp/31/のHTMLのaタグからリクエストが発生したため、Refererヘッダがつく。 レスポンス 全てテキスト。行で区切られる。 フォーマット ステータスラインは1行。ヘッダ、ボディは複数行。 大項目 小項目 説明 ステータスライン プロトコルバージョン ステータスコード 1XX 処理継続、2XX 正常終了、3XX リダイレクト、4XX クライアントエラー、5XX サーバエラー テキストフレーズ レスポンスヘッダ Content-Length ボディのバイト数 Content-Type MIMEタイプ; charset=エンコーディング 空行 ヘッダの終わりを示す ボディ 【例】 HTTP/1.1 200 OK Date Wed, 04 May 2011 04 51 51 GMT Server Apache/2.2.14 (Ubuntu) X-Powered-By PHP/5.3.2-1ubuntu4.2 Vary Accept-Encoding Content-Length 20 Keep-Alive timeout=15, max=100 Connection Keep-Alive Content-Type text/html; charset=UTF-8 body 13 51 /body Content-type メディアタイプを示すエンティティヘッダ(メッセージボディに対する付随情報)。type "/" subtype *( ";" parameter )であらわされる。text/html; charset=utf-8など。charsetを追加すると出力の文字コードを示す。HTML文書にapplication/octet-streamを付けると、 多くの場合、Webブラウザはそれをダウンロードするか否か問い合わせるようになる。 Apacheの場合は、httpd.confの以下の設定でcharsetを指定する。 AddDefaultCharset UTF-8 Tomcatでは、JSPのpageディレクティブで設定する。 %@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" % http //www.atmarkit.co.jp/fjava/rensai3/mojibake01/mojibake01.html 参照
https://w.atwiki.jp/water28/pages/79.html
HTML5基本構造 HTML5の基礎組み立て DOCTYPE 宣言(DOCTYPE スイッチ) HTML5基本構造 参考サイト:http //www.htmq.com/html5/002.shtml より明確に文書構造を示すことができる フォームの入力補助やチェック機能を属性で指定できる 動画や音声データをHTMLからシンプルに扱える APIの追加により、ウェブアプリケーションが構築しやすくなる HTML5で追加される予定の要素(タグ) HTML5で廃止される予定の要素(タグ) HTML5の基礎組み立て !DOCTYPE html html lang="ja" head title TAG Design /title !-- 文字コード -- meta http-equiv="Content-Type" content="text/html; charset=utf-8" !-- 検索キーワード -- meta name="keywords" content="keyword1,keyword2" !-- サイト説明文 -- meta name="description" content="This is test page !" !-- 作者情報 -- meta name="author" content="miyoshi" !-- 著作権情報 -- meta name="copyright" content="miyoshi" !-- css外部参照 -- link rel="stylesheet" type="text/css" href="../css/style.css" !-- google api - jquery -- script type="text/javascript" src="https //ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" /script /head body div id="wrapper" header h1 TAG Design /h1 h2 ~ tag design ~ /h2 /header div id="main" ul li class="about" a href="#" About Us /a /li /ul /div footer li a href="#" 個人情報の取り扱いについて /a /li li a href="#" サイトマップ /a /li p Copyright copy; 2012 TAG Design /p /footer /div /body /html DOCTYPE 宣言(DOCTYPE スイッチ) 参考サイト:http //2xup.org/log/2007/07/27-2111 各ブラウザの DOCTYPE スイッチ対応表:http //spreadsheets.google.com/pub?key=pbrvd2wQKc03fJ5QWgYr-Cw gid=3 HTML5はDTDがいらない:http //withd.jp/web/tips/standard/3947.html?page=2 DTDwiki:http //ja.wikipedia.org/wiki/Document_Type_Definition オンの状態 standards mode (標準準拠モード) 仕様に準拠した厳格な表示モード オフの状態 quirks mode (後方 (過去) 互換モード) 仕様に準拠していない古いブラウザとの互換 css3フォーマット @import url(http //fonts.googleapis.com/css?family=Fredericka+the+Great); body, header, nav, article, aside, footer, div, ul, li, h1, h2, p { margin 0; padding 0; } body { text-align center; line-height 1.5; min-width 800px; background-color #f5f5f1; color #666666; font-family Fredericka the Great , cursive; font-size 62.5%; }
https://w.atwiki.jp/memcache/pages/36.html
HTTP Header Proxy ServerWeb Debugging Proxy LINK SSL Pass-Thu HTTP Header http //www.tohoho-web.com/ex/http.htm http //web-tan.forum.impressrd.jp/e/2010/01/12/7156 Proxy Server http //howto.ysn-jp.com/tor/tor_what.php http //www.atmarkit.co.jp/fwin2k/win2ktips/031autoproxy/autoproxy.html Web Debugging Proxy Fiddler http //www.fiddler2.com/fiddler2/ LINK Studying HTTP http //www.studyinghttp.net/ Smart http //www.rfs.jp/sb/perl/03/03.html HTTPプロトコルとサーバへのリクエスト(FUJITSU) http //jp.fujitsu.com/solutions/sdas/technology/web-apl/01-http-protocol.html
https://w.atwiki.jp/0x0b/pages/89.html
ハイパーテキスト転送プロトコル RFC 2616 WebブラウザとWebサーバの間でHTMLなどのコンテンツの送受信に用いられる通信プロトコル リクエスト-レスポンス型 トランスポート・プロトコルとして通常TCPを使用 基本的な考え方は非常に単純であり「何を」「どうして」ほしいのかを相手に要求する。「何を」に当たるのがURL、「どうして」がメソッドにあたる。 World Wide WebにおけるWebページなどのリソースは、Uniform Resource Identifierによって指定される。 ポート番号80をデフォルトとして使用する(送信時は8080)。 TLSで暗号化され、セキュリティを確保したHTTPは、HTTPSと呼ばれる(httpsは実際にはURIスキームの1つであり、実際のプロトコルにはHTTP over SSL/TLSが用いられる)。 HTTP は基本的にサーバが状態を保持しない (stateless) プロトコルだが、データベースなどを使用するWebアプリケーションにおいては状態保持が必要だったため、そのためにいわゆる Cookie とよばれる機構が Netscape Communications Corporation によって導入された。Cookie を使用することによって状態を管理し、"セッション" を維持することが可能になる。 HTTPの拡張プロトコルとしてWebDAVがある。 UPnPでは、HTTPをUDP上で使用するHTTPUや、マルチキャストで使用するHTTPMUが規定された。 HTTP/0.9 URLのみの簡単なやりとり HTTP/1.0 NNTPやSMTPのような各種ヘッダが定義 HTTP_Cookieなどの利用 HTTP/1.1 複数データを転送するためのキープアライブ(keep-alive)機能やプロキシなどの利用も想定された仕様 バーチャルホストをサポートした。インターネット人気に伴い多くの企業がWebサイトを持ち始めたが、当時ではまだまだ企業が自前のWebサーバを運用するのは人員、効率の問題で難しかったためISPのサーバでホスティングをしていた。当時はまだ一社ごとに専用サーバを用意するほどのことでもないため一台のサーバで複数のWebサイトを運用していた。 しかしバーチャルホストには問題がある。例えばある1台のサーバに foo.example.com と bar.example.com という二つの仮想Webサーバがあるとする。ここではクライアントは http //foo.example.com/index.html にアクセスしたいとする。そのためにはまず foo.example.com をIPアドレスに解決するためDNSサーバに問い合わせ、そのサーバにアクセスし GET index.html を要求する。しかしサーバ側のIPアドレスは foo.example.com と bar.example.com 共におなじIPアドレスである。もし foo.example.com にも bar.example.com にも index.html というファイルが存在すればクライアントはどちらのサーバにアクセスしたのかわかるすべがない。 これを解決するにはそれぞれにIPアドレスを付与することで解決できるが、IPv4の資源を無駄にすることになる。 HTTP/1.1ではこれを解決するためにHostヘッダを追加した。 HTTP/1.0のヘッダ GET /index.html HTTP/1.0 HTTP/1.1のヘッダ GET /index.html HTTP/1.1 Host foo.example.com 動作 通信の開始 他のプロトコル同様クライアント側とサーバ側ではHTTPの役割が大きく異なる。HTTP通信を開始できるのはクライアント側のみである。 クライアント側はサーバにリクエストを送り、サーバはクライアントにレスポンスを返すのが最も典型的なHTTPのやりとりである。 接続 システム間でメッセージをやりとりするにはTCP接続を確立させる必要がある。 HTTP/0.9ではクライアントのリクエストごとにTCP接続を確立させる必要があったが、これは当時のWebサイトがシンプルなテキストベースであることが多かったためである。近年ではJavaScriptやアニメーション画像など、多数のオブジェクトが埋め込まれたWebサイトが一般的となってきているが、これら全てのオブジェクトを取得するたびにTCP接続を確立するのはサーバやネットワークに大きな負担を強いるため、HTTP/1.1では持続的接続がサポートされることとなった。ただしこの機能が利用できるのはサーバ側がその要求を許可した場合のみである。 パイプライン クライアントは前のリクエストに対するサーバの応答を待たずに別のリクエストを発行できる。 メソッド HTTPでは8つのメソッドが定義されている。ただし実際のHTTP通信ではGETとPOSTメソッドだけで殆どを占める。 HTTPメソッドの一覧 メソッド HTTP/0.9 HTTP/1.0 HTTP/1.1 GET ○ ○ ○ POST ○ ○ PUT △ ○ HEAD ○ ○ DELETE △ ○ OPTION ○ TRACE ○ CONNECT ○ GET 指定されたURIのリソースを取り出す。HTTPの最も基本的な動作で、HTTP/0.9では唯一のメソッド。 POST GETとは反対にクライアントがサーバにデータを送信するメソッドである。Webフォームや電子掲示板、Wikiなどに投稿する。GETの場合と同じくサーバはクライアントにデータを返すことができる。 PUT 指定したURIにリソースを保存する。URIが指し示すリソースが存在しない場合は、サーバはそのURIにリソースを作成する。画像のアップロードなどが代表的。 DELETE 指定したURIのリソースを削除する。 OPTION サーバを調査するメソッド。例えばサーバがサポートしているHTTPのバージョンなどを調査できる。 HEAD GETと似ているがサーバはHTTPヘッダのみ返す。クライアントはWebページを取得せずともそのWebページが存在するかどうかを知ることが出来る。例えばWebページのリンク先が生きているか検証するときなどにリンク先のデータを全て取得することなく調査することが出来る。 TRACE サーバまでのネットワーク経路をチェックできる。サーバは受け取ったメッセージのそれ自体をレスポンスのデータにコピーして応答する。WindowsのTracertやUNIXのTracerouteとよく似た動作。 CONNECT 暗号化したメッセージをプロキシで転送する際に用いる。 サーバの連携 バーチャルホスト リダイレクト 301 MovedというステータスコードとURIを受け取りクライアントはこの受け取ったURIに再度GETを送る。 クッキー(HTTP_Cookie) HTTPメッセージ クライアントからのHTTPリクエストは3つの要素から構成される。それぞれメソッド、URI、HTTPのバージョンでありスペースで区切られている。 下にもっとも単純な、クライアントとサーバ(www.google.co.jp 80)とのHTTPプロトコルのやり取りの例を挙げる。 クライアントのリクエスト GET / HTTP/1.0 GETがメソッド、URIは / 、バージョンはHTTP/1.0であることを示す。 URIは/でルートリソースを対象にしたリクエストであることを示している。TRACEなど特定のサーバを対象としないリクエストの場合には*が表示される。 サーバのレスポンス HTTP/1.0 200 OK Cache-Control private Content-Type text/html Set-Cookie PREF=ID=72c1ca72230dea65 LD=ja TM=1113132863 LM=111 3132863 S=nNO7MIp W2o7Cqeu_; expires=Sun, 17-Jan-2038 19 14 07 GMT; path=/; domain=.google.co.jp Server GWS/2.1 Date Sun, 10 Apr 2005 11 34 23 GMT Connection Close html head meta http-equiv="content-type" content="text/html; charset=Shift_JI S" title Google /title style !-- ・・・以下省略 上のリクエストのGETにあたる部分をメソッドといい、 HTTP/1.0では、GET, HEAD, PUT, POST, DELETE, LINK, UNLINK、 HTTP/1.1ではさらに、OPTIONS, TRACEがある。 GETメソッドのレスポンスにはヘッダ情報のあとに改行が挟まれ、コンテンツ本体が送られる。 HEADメソッドのレスポンスにはコンテンツサイズや更新日時などの情報を含むヘッダのみが送られる。 また、リクエストの2行目以降はヘッダを送る。 HTTPヘッダフィールド ヘッダの各要素は フィールド名 内容 のペアで構成される。 ブラウザの情報を表すUser-Agent、使用候補言語を表すAccept-Language、他ページへのリンクを辿った場合にそのリンク元ページのURLを表すRefererなどが代表的なフィールドである。 なお、リクエスト時のHostヘッダはHTTP/1.1では必須であるが、HTTP/1.0では無くても良い。 但し、サーバがバーチャルホストを利用している場合は、Hostヘッダが無いとリソース取得に失敗するので、たとえHTTP/1.0を使用していてもHostヘッダを付加しなければならない。 HTTPヘッダフィールドの一覧 リクエストヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Acceptクライアントの受け入れ可能コンテンツタイプを示す○○ Accept-Charsetクライアントの受け入れ可能文字セットを示す○○ Accept-Encodingクライアントの受け入れ可能文字エンコーディングを示す○○ Accept-Languageクライアントの受け入れ可能言語を示す○○ Authorizationクライアントの認証情報を示す○○ Cookieクライアントの状態管理情報をサーバに返す Cookie2HTTP/1.1のSet-Cookie2ヘッダの受け入れ可能をサーバに知らせる Expectクライアントがサーバに期待する動作を示す○ Fromリクエスト発行者個人の情報を示す。一般的に電子メールアドレスを使用する○○ Host要求しているオブジェクトがあるホストを示す○ If-Matchif文を用い条件が真の場合のみリクエストを処理するようサーバに要求する○ If-Modified-Since指定日及び指定時刻以降にオブジェクトが変更されている場合のみリクエストを処理するよう要求する○○ If-None-MatchIf-Matchの逆で条件が真でない場合のみリクエストを処理する要求○ If-Range条件が真の場合のみ指定したオブジェクトの範囲を返すようサーバに要求する○ If-Unmodified-SinceIf-Modified-Sinceの逆で真でないときのみ実行する○ Max-Forwardsリクエストの中間システム経由数を最大いくつまでかを指定する○ Proxy-Authorizationクライアントがプロキシサーバに対して自身の認証を行う○ Rangeオブジェクト全体でなくリソースの一部を要求する○ Refererリクエストの出所を示す。一般的にはユーザの辿ったWebページのURLが用いられる。○○ TEレスポンスの受け入れ可能転送エンコーディングを示す○ レスポンスヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Accept-Rangesオブジェクトの一部に対するリクエストをサーバが受け入れ可能か示す○ Ageオブジェクトの経過時間を秒単位で返す○ AllowオブジェクトがサポートするHTTPメソッドを示す○○ ETagオブジェクトのエンティティタグ値を示す○ Locationオブジェクトの場所を示す○○ Proxy-Authenticateプロキシサーバがクライアントに認証を要求するときに用いる○ Retry-Afterリクエストの再試行をいつ行うかをクライアントに通知する○○ Serverサーバのベンダー名、バージョン番号を占めす○○ Set-Cookie2サーバがクライアントにCookieを送信するときに用いる Varyサーバのレスポンス内容を決定する際にリクエストURI以外に使用したHTTPヘッダのリストを示す○ WWW-Authenticateクライアントに対してリクエストの再発行を要求する。認証情報も含まれる○○ 一般ヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Cache-Controlメッセージの経由する中間キャッシュの動作を指示する○ Connection中間システムが転送すべきでないヘッダのリストを示す○○ Dateメッセージの作成日時を示す○○ Pragmaメッセージに関する追加情報を示す○○ Trailerメッセージボディの後に追加のヘッダーが表れることを示す○ Transfer-Encodingクライアントの転送を目的としたオブジェクトのエンコーディングを示す○ Upgrade通信相手に別のプロトコルにアップデートするよう要求する○ User-AgentクライアントのWebブラウザなどの情報を示す○○ Warningメッセージに関する追加情報を示す。通常はキャッシュの問題を警告するときに使われる○ エンティティヘッダ ヘッダ概要HTTP/0.9HTTP/1.0HTTP/1.1 Content-Encodingオブジェクトのエンコーディングを示す○○ Content-Languageオブジェクトの言語(人間の言語)を示す○○ Content-Lengthオブジェクトのサイズをバイト単位で示す○○ Content-Locationオブジェクトの場所を示す○ Content-MD5オブジェクトのメッセージダイジェストを運ぶ○ Content-Rangeメッセージボディで運ばれるオブジェクトの範囲を示す○ Content-Typeオブジェクトのタイプを示す○○ Expiresオブジェクトの有効期限の日時を示す○○ Last-Modifiedオブジェクトが最後に変更された日時を示す○○ Accept サーバのレスポンスに含まれるメッセージボディで受け入れることが出来るコンテンツタイプと各コンテンツタイプの相対的な優先度を指定するリクエストヘッダ。指定できるコンテンツタイプはIANAによって定義されている。 Accept text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c 上記のようにAcceptヘッダには行をわけて複数のコンテンツタイプを指定できる。上記の例はいずれの4のコンテンツタイプのいずれも受け入れ可能であることを示す。0.5や0.8といった数字は品質係数で0~1の範囲の数値である。数値の指定がなければ1.0となる。 text/plain; q=0.5 text/html text/x-dvi; q=0.8 text/x-c Accept-Charset レスポンスで返されるメッセージボディの文字コードを指定するリクエストヘッダ。Acceptと同じく複数指定でき品質係数も設定できる。定義済み文字セットはIANAが管理している。 Accept-Charset unicode, *; q=0.8 この例だとクライアントはUnicode文字セットを優先的に希望しているが他の文字セットとの相対優先度0.8で受け入れている。ただしサーバからのレスポンスのHTTPヘッダそのものの文字コードは常にISO-8859-1である。 Accept-Encoding Accept-Language レスポンスの言語(人間の言語)に対する優先度を指定する。言語コードはISO-639の2文字の省略コードを用いる。書き方は他のAccept-群と変わらず。 Accept-Language en-gb, en; q=0.8 上記の例はまずイギリス英語を要求し、利用できない場合はその他の英語を要求する。 Accept-Ranges Acceptで始まる他のヘッダフィールドと違いレスポンスヘッダーである。現在の仕様では2つの指定方法しかない。 Age リソースの推定経過時間を表示するレスポンスヘッダ。キャッシュサーバーはAgeヘッダの値からキャッシュしたリソースが有効かどうかを判定する。 Allow Authentication-info ユーザ認証のやりとりの最後で用いられる、成功したレスポンスのサーバが含めることの出来るレスポンスヘッダー。 Authorization サーバに対するクライアント自身の認証を行うことが出来る。 Cache-Control キャッシングの動作を指定するためのマスターヘッダ。 Connection Content-Encoding Content-Language リソースを英語などの自然言語で示すのに使われる。言語の指定はAccept-Languageヘッダと同じ。 Content-Length Content-Location Content-MD5 メッセージボディが変更されず宛先に届くことを保証する。MD5アルゴリズムを実行する。ただし悪意の改ざんに対しては当然MD5も改ざんされるのであまり機能はしない。どちらかといえば偶発的な変更の保証をしている。 Content-Range ダウンロードの再開に用いられる。 Content-Type メッセージボディに含まれるオブジェクトタイプを示す。次の例はリソースがテキストファイル、文字セットはISO-8859-4を使用していることを示している。 Content-Type text/plain; Charset=ISO-8859-4 Cookie クライアントがHTTP状態管理を望む場合にサーバから受け取ったクッキーを以後のリクエストに次の例のようなヘッダーを付加する。 Cookie $Version="1"; NAME="VALUE"; $Path="/shopping"; $domain="www.shop.com"+ $Port="80" $VersionはHTTPのバージョン、NAMEはクッキーの名前である。$から始まるクッキー名は使用が禁止されている。 Cookie2 基本的にCookieヘッダーとCookie2ヘッダーは別物である。 Date サーバがメッセージを生成した日時を示す。リソースの時間を示すLast-Modifiedヘッダーとは区別する必要がある。 HTTP/1.1では次のような形式を用いるようRFC1123で定義されている。 Date Sun, 06, Nov 1994 08 49 37 GMT HTTP仕様ではレスポンスにDateヘッダーを含めることを求めている。ただしレスポンスのステータスがサーバエラーの場合にはDateヘッダーは返らない。 ETag 主にキャッシングのパフォーマンスを向上する目的で使われる。 Expect サーバに対して特定の動作の期待を知らせる。用途としてはクライアントがサーバに対して100 Continueステータスを返すことを期待する場合に使われる。 Expect 100-continue サーバが期待に応じれない場合は417 Expectation Failedを返す。クライアントがいくつかのプロキシ経由で通信している場合、各プロキシサーバはExpectヘッダの一切の修正を許されない。 Expires オブジェクトの有効期限を示す。このヘッダで指定された日時までキャッシュはレスポンスのコピーを保持し、リクエストに対するレスポンスとして返すことが出来る。サーバがオブジェクトのキャッシュを望まない場合にはExpiresヘッダに過去の日時を設定することが多い。また、HTTP仕様では1年以上先の日時は設定できない。 Expires Thu, 28 Aug 2010 16 00 00 GMT Cache-Controlヘッダのmax-ageディレクティブはExpiresヘッダより優先されるため注意が必要である。 From リクエストを発行したユーザを特定することが出来る。1990年代では電子メールアドレスを設定することが多かったが、迷惑メールの問題もあり現在では殆ど使われていない。 From hoge@hogehoge.com Host 主にレンタルサーバのサポートを目的としてHTTP/1.1で導入された。現在ではHostヘッダを利用できない場合レンタルサーバのウェブサイトとまともな通信が出来ないと言ってよい(詳細はHTTP#歴史を参照)。 If-Match クライアントのリクエストを条件付きのリクエストにするために使われる。サーバは一定の条件が真であった場合のみリクエストを受け入れることが出来る。例えばウィキペディアを編集する際、記事のソースを取得し、書き換える際の間に別のユーザが既に編集していないかを判断するときなどに用いられる。 「if文」も参照 利用者:HogeがHTTPの記事を取得。ETagは1234 利用者:HageがHTTPの記事を取得。ETagは1234 利用者:HogeがHTTPのETagを再度取得。先ほど取得したETag 1234と現在のETag 1234が一致。 利用者:HogeがHTTPの記事を編集。ETagは1256になる。 利用者:HageがHTTPのETagを再度取得。先ほど取得したETagと現在のETagはマッチせず。 サーバは利用者:Hageの書き込みを拒否。 If-Modified-Since このヘッダーで指定された日時以降にオブジェクトが変更されている場合のみリクエストに応答するようサーバに要求する。リソースの削減に効果がある。 If-None-Match If-Matchと逆で条件が真でない場合のみリクエストを処理するよう要求する。 If-Range クライアントがキャッシュにオブジェクトの一部分を持っている場合にパフォーマンスを向上できる。 If-Unmodified-Since If-Modified-Sinceの逆の働きをする Last-Modified サーバオブジェクトの最終更新日時を示す。クライアントはこのヘッダを利用しIf-Modified-Sinceヘッダ等と組み合わせることによって効果を発揮する。 Location サーバがクライアントにリダイレクト先URLを知らせる際に用いられる。一般的にステータスコードが3xx代のレスポンスと共に使われるが201 Createdのレスポンスでも使うことが出来る。Content-Locationヘッダと名前が似ているが全く関係のない別のヘッダであるため注意。 Max-Forwards プロキシサーバ等を経由する際の最大ホップ数を指定する。二重ループなどでサーバから応答が得られない場合の問題解決の際、OPTIONメソッドやTRACEメソッドと共に用いられる。 HTTPステータスコード ステータスコードはクライアントのリクエストが成功したかどうかを示した上で追加情報を提供するいずれも3桁の数字から成る。具体的には100-199が情報提供、200-299が成功を示す。300-399はリダイレクト、400-499はエラーを示す。 セキュリティ技術 Basic認証 HTTP/1.1でBasic認証が定義されており最も単純なセキュリティ技術である。しかし仕様書を読むと定義を書いた著者自身が認証技術に疎いことがよくわかる。『HTTPプロトコル セキュア&スケーラブルなWeb開発』の著者は「基本認証を用いるくらいならなにも使わない方がまし」と著書に書いている。通常サーバは401ステータスコードで応答する。 行末文字はWindowsと同じCRLF。 RFC 2818 - HTTP Over TLS RFC 2817 - Upgrading to TLS Within HTTP/1.1 RFC 2616 - HTTP/1.1 ハイパーテキスト転送プロトコル -- HTTP/1.1 RFC 2068 - HTTP/1.1(初版,RFC 2616 によって obsolete) TS X 0085 2004 - ハイパテキスト転送プロトコル HTTP/1.1 標準仕様書(TS) RFC 1945 - HTTP/1.0 HttpTea Freeware HTTP Logger Studying HTTP
https://w.atwiki.jp/eriax/pages/121.html
制限 セクション構造からのアウトライン抽出は HTML 4.4.11.1 に準拠。効率は考慮外。 Microdata アイテム抽出は HTML 5.2.5, 5.5.1 に準拠。ただし絶対 URI のチェックはしない。 どちらも抽出するだけ。 使用例 アウトライン var hapi = HTML_Outlines_and_Microdata_for_HTML_Browsers; // 文字列として確認 alert(hapi.createOutlineString(document)); // ul 要素を生成 var toc = hapi.createOutlineList(document); Microdata var hapi = HTML_Outlines_and_Microdata_for_HTML_Browsers; // 文書内のアイテムを JSON で抽出 var items = hapi.findAllItems(document); var jsonData = JSON.stringify(items); ソースコード if ( undefined === typeof Array.prototype.map) { Array.prototype.map = function (callbackfn) { var thisArg = arguments[1]; var result; var count; var i; if ( function !== typeof callbackfn) { throw new Error; } count = this.length; result = new Array(count); for (i = 0; i count; i++) { if (i in this) { result[i] = callbackfn.call(thisArg, this[i], i, this); } } return result; }; } if ( undefined === typeof Array.prototype.indexOf) { Array.prototype.indexOf = function (ceil, floor) { return function (searchElement) { var fromIndex = arguments[1]; var count = this.length; var i = Number(fromIndex) || 0; i = (i 0) ? ceil(i) floor(i); if (i 0) { i += count; } for (; i count; i++) { if (i in this) { if (this[i] === searchElement) { return i; } } } return -1; }; }(Math.ceil, Math.floor); } if ( undefined === typeof Array.prototype.filter) { Array.prototype.filter = function (callbackfn) { var thisArg = arguments[1]; var result; var count; var i; var v; if ( function !== typeof callbackfn) { throw new Error; } count = this.length; result = new Array; for (i = 0; i count; i++) { if (i in this) { if (callbackfn.call(thisArg, v = this[i], i, this)) { result[result.length] = v; } } } return result; }; } //////////////////////////////////////////////////////////////////////// var HTML_Outlines_and_Microdata_for_HTML_Browsers = new function () { /*@cc_on@*/ ////////////////////// // Outlines // var isSectioningContent = function () { var Names = /^(? section|nav|article|aside)$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var isSectioningRoot = function () { var Names = /^(? body|blockquote|details|fieldset|figure|td)$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var isHeadingContent = function () { var Names = /^(? h[1-6]|hgroup)$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var isHeadingGroupContent = function () { var Names = /^hgroup$/i; return function (node) { return node (node.nodeType === 1) Names.test(node.tagName); }; }(); var getLevel = function (elt) { if (isHeadingGroupContent(elt)) { return getHeadingGroupLevel(elt); } return getSingleHeadingLevel(elt); }; var getSingleHeadingLevel = function (elt) { return parseInt(elt.tagName.slice(-1)); }; var getHeadingGroupLevel = function (elt) { var maxLevel = Infinity; var currentLevel; var nodes = elt.childNodes; var node; var i; for (i = 0; node = nodes[i++];) { if (isHeadingContent(node)) { currentLevel = getSingleHeadingLevel(node); if (currentLevel maxLevel) { maxLevel = currentLevel; } } } return maxLevel; }; // function HTMLOutlinee(arg) { if (arguments.length 0) { if (arg) { var p; for (p in arg) { if (arg.hasOwnProperty(p)) { this[p] = arg[p]; } } } } } HTMLOutlinee.create = function (element) { return new HTMLOutlinee({ element element, sections [], parent null }); }; HTMLOutlinee.prototype = new function () { this.element = null; this.sections = null; this.parent = null; this.type = #outlinee ; this.addSection = function (section) { this.sections.push(section); section.outlinee = this; return section; }; this.getFirstSection = function () { return this.sections[0]; }; this.getLastSection = function () { var sections = this.sections; return sections[sections.length - 1]; }; this.toString = function () { return [object HTMLOutlinee] ; }; }; function HTMLSection(arg) { if (arguments.length 0) { if (arg) { var p; for (p in arg) { if (arg.hasOwnProperty(p)) { this[p] = arg[p]; } } } } } HTMLSection.create = function (heading, parent, outlinee) { return new HTMLSection({ heading heading, parent parent, children [], outlinee outlinee, associated [] }); }; (function () { this.heading = null; this.parent = null; this.children = null; this.outlinee = null; this.associated = null; this.type = #section ; this.appendChild = function (div) { this.children.push(div); div.parent = this; return div; }; this.hasChildSections = function () { var nodes = this.children; var nodeCount = nodes.length; var i; for (i = 0; i nodeCount; i++) { if (nodes[i] instanceof HTMLSection) { return true; } } return false; }; this.getLastSection = function () { var nodes = this.children; var nodeCount = nodes.length; var node; var i; for (i = nodeCount; i 0;) { node = nodes[i -= 1]; if (node instanceof HTMLSection) { return node; } } return null; }; this.associate = function (node) { this.associated.push(node); return node; }; this.toString = function () { return [object HTMLSection] ; }; }).call(HTMLSection.prototype); function createOutlinee(root) { var currentOutlinee = null; var currentSection = null; var stack = []; (function (root, callbackfn) { var node = root; var n; while (node) { callbackfn(node, enter ); if ((n = node.firstChild)) { node = n; continue; } do { callbackfn(node, exit ); if (node == root) { node = null; break; } if ((n = node.nextSibling)) { node = n; break; } } while ((node = node.parentNode)) } })(root, function (node, mode) { var top = stack[stack.length - 1]; if (top === node mode === exit ) { stack.pop(); } else if (isHeadingContent(top)) { ; } else if (mode === enter (isSectioningContent(node) || isSectioningRoot(node))) { if (currentOutlinee !== null currentSection.heading === null) { currentSection.heading = undefined; } if (currentOutlinee !== null) { stack.push(currentOutlinee); } currentOutlinee = HTMLOutlinee.create(node); currentSection = HTMLSection.create(null, currentSection, currentOutlinee); currentOutlinee.addSection(currentSection); } else if (mode === exit (isSectioningContent(node) stack.length 0)) { var outlinee = currentOutlinee; currentOutlinee = stack.pop(); currentSection = currentOutlinee.getLastSection(); currentSection.appendChild(outlinee); } else if (mode === exit (isSectioningRoot(node) stack.length 0)) { var outlinee = currentOutlinee; currentOutlinee = stack.pop(); currentSection = currentOutlinee.getLastSection(); while (currentSection.hasChildSections()) { currentSection = currentSection.getLastSection(); } currentSection.appendChild(outlinee); } else if (mode === exit (isSectioningContent(node) || isSectioningRoot(node))) { currentSection = currentOutlinee.getFirstSection(); } else if (currentOutlinee === null) {} else if (mode === enter isHeadingContent(node)) { if (currentSection.heading == null) { currentSection.heading = node; } else if (getLevel(node) = getLevel(currentOutlinee.getLastSection().heading)) { currentSection = currentOutlinee.addSection(HTMLSection.create(node, currentSection.parent, currentOutlinee)); } else { var candidateSection = currentSection; while (true) { if (getLevel(node) getLevel(candidateSection.heading)) { currentSection = candidateSection.appendChild(HTMLSection.create(node, candidateSection.parent, currentOutlinee)); break; } var newCandidateSection = candidateSection.parent; candidateSection = newCandidateSection; } } stack.push(node); } else {} if (mode === exit currentSection !== null) { currentSection.associate(node); } }); if (currentOutlinee === null) { return null; } return currentOutlinee; } var getTextContent = function (n) { switch (n.nodeType) { case 1 if (/^img$/i.test(n.nodeName)) { return n.alt; } if (/^input$/i.test(n.nodeName)) { return n.value; } return Array.prototype.concat.apply([], Array.prototype.map.call(n.childNodes, arguments.callee)).join( ); case 3 case 4 return n.data; default return ; } }; (function () { this.isSectioningRoot = function () { return isSectioningRoot(this.element); }; this.hasEffectiveSections = function () { var sections = this.sections; var section; switch (sections.length) { case 0 return false; case 1 return sections[0].isEffectiveSection(); default return true; } }; this.toJSON = function (internal) { var children = []; var sections = this.sections; var sectionCount = sections.length; var i; for (i = 0; i sectionCount; i++) { children = children.concat(sections[i].toJSON(true)); } if (internal !this.isSectioningRoot()) { return children; } return { type #root , context this.element.tagName, children children }; }; }).call(HTMLOutlinee.prototype); (function () { this.isEffectiveSection = function () { return isSectioningContent(this.outlinee.element) || this.hasChildSections() || this.heading !== null; }; this.toJSON = function () { var heading = this.heading; var tagName = this.outlinee.element.tagName; var id; var label; if (heading) { id = heading.id; label = getTextContent(heading); } else { if (heading === null) { label = (anonymous\x20 + tagName + ) ; } else { label = (undefined\x20 + tagName + ) ; } } var children = this.children; var childCount = children.length; var result = []; var i; for (i = 0; i childCount; i++) { result = result.concat(children[i].toJSON(true)); } return { context tagName, type #section , id id, label label, children result }; }; }).call(HTMLSection.prototype); // var outlineToList = function (jsonData, params) { var doc = params.ownerDocument; var list0 = doc.createElement(params.tagName || ul ); var item0 = doc.createElement( li ); var frag0 = doc.createDocumentFragment(); item0.appendChild(doc.createElement( a )).appendChild(doc.createTextNode( _ )); return (function (data) { var list; var item; var frag = frag0.cloneNode(false); var children = data.children; var childCount = children.length; var child; var i; var n; var s; if (childCount 0) { for (i = 0; i childCount; i++) { child = children[i]; item = item0.cloneNode(true); n = item.firstChild; if (child.type === #section ) { if ((s = child.id)) { n.href = # + encodeURIComponent(s); } n.firstChild.data = child.label; frag.appendChild(item); frag.appendChild(arguments.callee(child)); } } list = list0.cloneNode(false); list.appendChild(frag); } else { list = frag; } return list; })(jsonData); }; this.createOutlineList = function (root, doc) { var outlinee = createOutlinee(root); if (!doc) { doc = (root.nodeType === 9) ? root root.ownerDocument; } return outlineToList(outlinee.toJSON(), { ownerDocument doc, tagName ul }); }; var outlineToString = function (jsonData, level) { var tab = 2; if (!level) { level = 1; } var padding; var result = []; if (jsonData.type === #root ) { padding = new Array(level).join( \x20\x20 ) + = ; result.push(padding + [ + jsonData.context + ] ); level += tab; } var children = jsonData.children; var childCount = children.length; var child; var i; var c; if (childCount 0) { padding = new Array(level).join( \x20\x20 ) + + ; for (i = 0; i childCount; i++) { child = children[i]; if (child.type === #section ) { result.push(padding + [ + child.context + ] + child.label.replace(/^\s+|\s+$/g, ).replace(/(? \r\n|\r|\n)+/g, -- ).replace(/\s{2,}/g, \x20 )); } if ((c = arguments.callee(child, level + tab))) { result.push(c); } } } return result.join( \n ); }; this.createOutlineString = function (root) { var outlinee = createOutlinee(root); return outlineToString (outlinee.toJSON()); }; ////////////////////// // Microdata // var findItemProperties = function (root) { var push = Array.prototype.push; var filter = Array.prototype.filter; var isElement = function (n) { return n.nodeType === 1; }; var results = []; var memory = []; var pending = []; results.push(root); push.apply(pending, filter.call(root.childNodes, isElement)); /*@if(1)var a;if((a=root.getAttributeNode( itemref )) a.specified){@else@*/ if (root.hasAttribute( itemref )) { /*@end@*/ var refs; var TrailWS = /^\s+|\s+$/g; var WS = /\s+/; if ((refs = root.getAttribute( itemref /*@,0@*/)) (refs = refs.replace(TrailWS, ))) { refs = refs.split(WS); var refCount = refs.length; var doc = root.ownerDocument; var m; var i; for (i = 0; i refCount; i++) { if ((m = doc.getElementById(refs[i]))) { pending.push(m); } } } } while (pending.length 0) { var current = pending.shift(); if (memory.indexOf(current) = 0) { continue; } memory.push(current); /*@if(1)var a;if(!(a=current.getAttributeNode( itemscope ))||!a.specified){@else@*/ if (!current.hasAttribute( itemscope )) { /*@end@*/ push.apply(pending, filter.call(current.childNodes, isElement)); } /*@if(1)var a;if((a=current.getAttributeNode( itemprop )) a.specified){@else@*/ if (current.hasAttribute( itemprop )) { /*@end@*/ results.push(current); } } if ( undefined !== typeof root.compareDocumentPosition) { results.sort(function (e1, e2) { if (e1.isSameNode(e2)) { return 0; } if (0 !== (e1.compareDocumentPosition(e2) Node.DOCUMENT_POSITION_FOLLOWING)) { return -1; } return 1; }); } else { /*@if(1)results.sort(function(e1,e2){return e1.sourceIndex-e2.sourceIndex});@else@*/ var r1 = root.ownerDocument.createRange(); var r2 = root.ownerDocument.createRange(); results.sort(function (e1, e2) { r1.selectNode(e1); r2.selectNode(e2); return r1.compareBoundaryPoints(Range.START_TO_START, r2); }); /*@end@*/ } return results; }; var findAllItems_JSON = function (root) { var result = {}; var items = []; var elems = root.getElementsByTagName( * ); var elemCount = elems.length; var elem; var i; for (i = 0; i elemCount; i++) { elem = elems[i]; /*@if(1)var a;if(elem.nodeType===1 (a=elem.getAttributeNode( itemscope )) a.specified){@else@*/ if (elem.hasAttribute( itemscope )) { /*@end@*/ items.push(getObject_JSON(elem, [])); } } result[ items ] = items; return result; }; var getObject_JSON = function (item, memory) { var result = {}; memory.push(item); /*@if(1)var a;if((a=item.getAttributeNode( itemtype )) a.specified){@else@*/ if (item.hasAttribute( itemtype )) { /*@end@*/ result[ type ] = item.getAttribute( itemtype /*@,0@*/ ); } /*@if(1)var a;if((a=item.getAttributeNode( itemid )) a.specified){@else@*/ if (item.hasAttribute( itemid )) { /*@end@*/ result[ id ] = item.getAttribute( itemid /*@,0@*/ ); } var properties = {}; var elems = findItemProperties(item); var elemCount = elems.length; var elem; var i; var TrailWS = /^\s+|\s+$/g; var WS = /\s+/; for (i = 0; i elemCount; i++) { elem = elems[i]; /*@if(1)var a;if(!(a=elem.getAttributeNode( itemprop ))||!a.specified){@else@*/ if (!elem.hasAttribute( itemprop )) { /*@end@*/ continue; } var names = elem.getAttribute( itemprop /*@,0@*/ ).replace(TrailWS, ); if (!names) { continue; } names = names.split(WS); var value; /*@if(1)var a;if((a=elem.getAttributeNode( itemscope )) a.specified){@else@*/ if (elem.hasAttribute( itemscope )) { /*@end@*/ if (memory.indexOf(elem) 0) { value = getObject_JSON(elem, memory); } else { value = ERROR ; } } else { switch (elem.tagName.toUpperCase()) { case META value = elem.content || ; break; case EMBED case IFRAME case IMG value = elem.src || ; break; case AUDIO case SOURCE case TRACK case VIDEO value = elem.src; if ( undefined === typeof value) { value = elem.getAttribute( src /*@,0@*/ ) || ; } break; case A case AREA case LINK value = elem.href; break; case OBJECT value = elem.data; break; case TIME value = elem.dateTime; if ( undefined === typeof value) { value = elem.getAttribute( datetime /*@,0@*/ ) || ; } break; default /*@if(1)var s;if( undefined !==typeof(s=elem.innerText)){value=s}@else@*/ value = elem.textContent; /*@end@*/ break; } } var nameCount = names.length; var name; var j; for (j = 0; j nameCount; j++) { name = names[j]; if (properties.hasOwnProperty(name)) { properties[name].push(value); } else { properties[name] = [value]; } } } result[ properties ] = properties; return result; }; this.findAllItems = findAllItems_JSON; }; 初出 2011-09-04/05 修正 2012-03-05
https://w.atwiki.jp/katsuhiro/pages/26.html
HTTPメソッド GET情報取得メソッド POST PUT DELETEリソース削除メソッド HTTPリクエスト ポストデータ HTMLのPOST指定のformから送信されるデータ JSPのrequestオブジェクトから下記のメソッドで情報を取得できるgetParameter getParameterValues リクエストボディのセットされて送信される クエリ情報 URLの末尾の"?"以降に「キー=値」のセットで付加される簡易な情報 複数のセットがある場合は" "で連結される URLに直接指定するほか、HTMLのGET指定のformから送信されるデータ formのmethod属性が省略された場合もクエリ情報として送信される JSPのrequestオブジェクトから下記のメソッドで情報を取得できるgetParameter クエリ情報に特殊文字が含まれる場合は、あらかじめエンコードしておく必要がある(form経由の場合はエンコード不要) URLに使用可能な文字数を超えて送信できない(2,083文字)FireFoxの場合は制限が無いが、動作が遅くなる場合もあるらしい データがアドレス欄に露出してしまう ヘッダ情報 「名前: 値」形式 種類一般ヘッダ(要求/応答時双方で利用) エンティティヘッダ(コンテンツに関する情報) リクエスト(要求)ヘッダ(クライアントに関する情報) レスポンス(応答)ヘッダ(その他) JSPのrequestオブジェクトから下記のメソッドで情報を取得できるgetHeaderNames ただし、情報取得専用メソッドが存在するヘッダについてはそちらを使う ■ヘッダ例 種類 ヘッダ名 概要 一般 Cache-Control キャッシュルールを規定する Connection プロキシ(中間)サーバで削除すべきHTTPヘッダを指定 Date コンテンツ生成日時 Pragma キャッシングを利用するか(下位互換用のヘッダ) Transfer-Encoding コンテンツの転送エンコーディング方式 リクエスト Accept クライアント対応コンテンツの種類(優先順) Accept-Language クライアント対応言語(優先順) Authorization 認証情報 Cookie クライアントに保存されたクッキーデータを送信 Host 要求先ホスト名 If-Modified-Since 指定日時以降にコンテンツが更新されている場合にのみ、サーバはデータを送信 Proxy-Authorization プロキシサーバ用の認証情報 Range 要求リソース範囲 Referer リンク元URI User-Agent クライアントの種類 レスポンス ETag リソースを一意に特定するためのキー情報(コンテンツが更新されていないかどうかを特定する場合などに使用) Location クライアントに新しいURIに移動するように促す Server サーバの種類 Set-Cookie クライアントにクッキーを送信 WWW-Authenticate クライアントに認証を要求 エンティティ Content-Encoding コンテンツのエンコーディング方式 Content-Length コンテンツサイズ Content-Type コンテンツの種類 Expires コンテンツの有効期限 Last-Modified コンテンツの最終更新年月日 クッキー サーバがクライアントに対して自由に読み書きできるテキスト クッキーの有効期限負数をセットした場合、ブラウザの終了時に削除される 0をセットした場合、その場で削除される 1以上をセットすると、その秒数分保持される クッキーのデメリットクライアント側でクッキーを受け入れないように設定することが可能 クライアント側でクッキーの改竄や削除が可能 実データがネットワーク上を流れてしまう クッキーの制約1つのホスト、ドメイン当たりの最大個数は20個(総数では300個以内) クッキー1つあたりの最大サイズは4096バイト セッション情報 長期間にわたって情報を保持するには不向き ユーザがブラウザを開いている間だけアプリケーション内で情報を受け渡しする場合にはクッキーより手軽でセキュアな仕組み sessionJSPの暗黙オブジェクトの1つ 下記のメソッドを使って読み書きするgetAttribute setAttribute @pageディレクティブのsession属性がfalseの場合は使えない sessionが不要の場合はsession属性をfalseにしておく(サーバリソースの節約) sessionを使うと… クライアントからサーバにリクエスト送信 サーバからのレスポンスにSet-Cookieヘッダの値としてセッションIDが付加される(JSESSIONID) クライアントからサーバに2回目以降のリクエスト送信時、Cookieヘッダの値として、受け取ったJSESSIONIDを付加して送る サーバをそのセッションIDに該当するセッションを使って処理をし、レスポンスを返す セッションの破棄方法明示的な破棄(session.invalidate()) 有効期限を設定する(session.setMaxInactiveInteval()) web.xmlにセッションの有効期限を設定する session-config session-timeout セッションの寿命明示的に破棄されるか有効期限を過ぎない限り、クライアントを閉じてもサーバ上で生き続ける ieHTTPHeaders http //www.blunck.info/iehttpheaders/iehttpheaders.html ⇒IE上でHTTPによる通信内容をトレースするツール
https://w.atwiki.jp/zyoushiki/pages/96.html
html head title ネ申の間 - トップページ /title link rel = "stylesheet" href = "kami1.css" meta http-equiv="Content-Language" content="ja" meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /head body header h1 a href="index.htm" img src="/image/logo.png" alt="Kami" /a /h1 header div id="container" B ul id ="menu" li a href="intro.htm" ネ申の間とは? /a /li li a href="knowledge.htm" ネ申に従う心得 /a /li li a href="character.htm" ネ申と仲間と屑達 /a /li li a href="goods.htm" 商品 /a /li li a href="game.htm" ゲーム /a /li /ul /B /div h2 トップページ /h2 div id="main" article ul li time datetime="2008-04" 2008年4月 /time 入学 /li li time datetime="2011-03" 2011年3月 /time 卒業 /li /ul 卒業5周年!(キリッ!!)byネ申 br br AA等は a href = "http //www37.atwiki.jp/zyoushiki/" B こちら /B /a だぞ。 by糸申士 br /article /div div id="sub" aside div class="bnr_inner" dl a href="kami.htm" dt img src="images/bnr_kami.png"alt="kami" /dt dd このカリスマ性感じるオムツ被ってる彼は一体…? /dd /a /dl /div div class="bnr_inner" dl a href="http //www.tokumei24.jp/" dt img src="images/bnr_okame.jpg"alt="okame" /dt dd この酷い顔見かけたら警察に通報だ! /dd /a /dl /div /aside /div footer p id="copyright") small Copyright copy;2010 ネ申の間 /small /p /footer /body /html
https://w.atwiki.jp/naobe/pages/67.html
WEBアプリケーションに戻る タグ http //www.htmq.com/html/index.shtml 参照 radioタグとcheckboxタグ radioタグは1個選択可能。checkboxは複数選択可能 form action="/DynamicWEB/ShowDate" input type="checkbox" name="aaa" AAA br input type="checkbox" name="bbb" BBB br input type="checkbox" name="ccc" CCC br input type="submit" br /form 上記のリクエストは以下 ShowDateServlet start. key aaa, val[0] on key ccc, val[0] on 配列にする意味がないような。しかしこれが一般的な使い方でしょう。 配列を有効に活用するには以下の形式。 form action="/DynamicWEB/ShowDate" input type="checkbox" name="key" value="AAA" AAA br input type="checkbox" name="key" value="BBB" BBB br input type="checkbox" name="key" value="CCC" CCC br input type="submit" br /form 上記のリクエストは以下 key key, val[0] AAA key key, val[1] BBB diabled属性 HTML4.01では、inputタグ、TextAreaタグで使用可能。 divで画面を分割 head style type="text/css" #container{width 750px;text-align left;margin 0px auto;} #header{width 750px;margin 0px 0px 15px 0px;} !-- float 回りこみを許す -- #content{float left;width 590px;} #sidebar{float right;width 150px;padding 0px 0px 0px 10px;} !-- clear 回りこみを解除する -- #footer{clear both;width 750px;margin 15px 0px 15px 0px;} /style /head body div id="container" div id="header" ここがヘッダー /div div id="content" ここがコンテンツ /div div id="sidebar" ここがサイドバー /div div id="footer" ここがフッター /div /div /body 用語 項目 説明 備考 インライン要素 前後で改行されない ブロック要素 前後で改行される