Calender
Sun Mon Tue Wed Thu Fri Sat
1234567
891011121314
15161718192021
22232425262728
293031    
<< December 2019 >>
広告
SEARCH

SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
LINKS
PROFILE
OTHERS
SKYPE
PC: skype.jojo.jp
chat
iPad: iphone.jojo.jp
chat call
THANKS



本日:
昨日:
多言語
広告
 ▼▲ 作業日報 ▼△
    What's under the hood?
<< デバッグ用サーバ、PHPのconfigure | main | エイリアンの引越し? >>
XMLサービス用スクリプトの設計で何度も躓く点
自分に対するメモです。
ウェブサービスの利用のシチュエーション(接続元):
1.ブラウザからActiveX等でアクセスされる場合(Ajaxサイト(ブラウザ中のDOM)、Flash・JavaAppletのXMLコンポーネント)
2.通常のプロセス(OSが管理する)からアクセスされる場合(RSSリーダー、アプリケーション中のDOM)
3.Apacheの内部スレッドからアクセスされるサービス

問題点は:
・本セッション(本ページで確立した)との同期
(接続元でヘッダはだれが管理しているか)
・キャッシュ(Last-Modified・etagとサーバー内キャッシュ)
・経路は誰が設定しているのか(プロキシ等)
 (例:ブラウザ内MS製DOMはブラウザの設定で外への接続は自動的にDOMへセットさるが、同ページ内のActiveXが外部へ接続へはいけないのでページ提供側でとか)
・これは自分だけかもしれませんが、XMLを文字列として取得したい場合(XML宣言、ヘッダ無し)もある。
蓄積型とかXML出力サポートコマンドの出力とか、
解決案:全部GETで処理し、ヘッダもセッション情報として入れておいてリモートを特定しながら暗号化して処理することかな、のっとられそうな気もするが、何よりもデバッグが難しいし、ログの解析も一般的なものでは無理になる
ブラウザから直接ファイルを取得した場合(デフォルト時)
GET http://192.168.1.20/config.xml HTTP/1.1
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
If-Modified-Since: Tue, 05 Sep 2006 07:07:13 GMT
If-None-Match: "1e6d9-297b-82130f77"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: 192.168.1.20
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: SQLiteManager_currentTheme=green; SQLiteManager_currentLangue=2
アプリケーション(exe)でWinHttp.WinHttpRequest.5.1を用いた場合
GET http://192.168.1.20/request.php?tp=stylesheet HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: 192.168.1.20
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: SQLiteManager_currentTheme=green; SQLiteManager_currentLangue=2
Last-Modified、eTagが入りません(自分で入れます)Cookie?
ブラウザ中(JScript)Msxml2.DOMDocument.load()
GET http://192.168.1.20/config.xml HTTP/1.1
Accept: */*
Referer: http://192.168.1.20/config.html
Accept-Encoding: gzip, deflate
If-Modified-Since: Tue, 05 Sep 2006 07:07:13 GMT
If-None-Match: "1e6d9-297b-82130f77"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: 192.168.1.20
Proxy-Connection: Keep-Alive
Cookie: SQLiteManager_currentTheme=green; SQLiteManager_currentLangue=2
この場合ブラウザのキャッシュを利用しているようですCookie?
Thunderbird(RSS取得)
GET http://192.168.1.20/rss.php HTTP/1.1
Host: 192.168.1.20
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:1.7.10) Gecko/20050716 Thunderbird/1.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
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: 300
Proxy-Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
当然IEとは別の設定を使いますから独自接続ルート・ヘッダは管理します
ApacheのPHPスレッド中から $dom->load('http://xxxx/abc.php');//http経由
Host:192.168.1.20
※本来CookieやらAuthrizeヘッダ等を入れてテストしてみたかったのですがとりあえずここまで
※いらんSQLiteのクッキーがセットされています、とりあえずソノママ残します
※「横取り丸」で取ったので串用リクエストになっています。

MS系のコンポーネントはIEのプロキシ設定が適用されるようです。 BASP21なんかでも取得
| コンピュータ | 11:46 | comments(0) | trackbacks(0) |









http://blog.jojo.jp/trackback/393777