2005年11月30日

IE で JScript を利用して外部コンテンツを取得する際に Referer ヘッダを変更することはできませんか?

Microsoft.HTTPXML ActiveX には setRequestHeader というメソッドがあるのですが、ヘッダとして "Referer" を指定した場合、上書きされません。セキュリティ上の観点からだと思われます。

ただし "Referer:" のようにコロンをつけて指定すると Referer ヘッダとして、指定した値が送られます。これを利用すると Referer ヘッダを書き換えることができます。例えば以下の場合 Referer として "http://www.yahoo.co.jp" が送られます。

r.setRequestHeader("Referer:","http://www.yahoo.co.jp")

これは IE のセキュリティホールのようです。したがってそのうち patch が出るかもしれません。(参考:http://secunia.com/advisories/16942/

Firefox で script が置かれているサーバー以外のサーバーのコンテンツを取得するにはどうすればよいですか?

スクリプトに以下のコードを入れて、ユーザーの判断を仰ぎます。

netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesRead")

これによりユーザーにどんなコンテンツを読み込んでも良いかどうか判断をさせるダイアログが表示されます。ユーザーが許可すればスクリプトは他のサーバーのコンテンツを取得することができます。

詳細は Signed Scripts in Mozilla にかかれています。

2005年11月25日

JavaScript で文字数を数えるにはどうすればよいですか?

単純に文字数であれば length を使います。

var str="test"
alert(str.length)

全角・半角を意識しないバイト数を知りたい場合には charCodeAt() を利用すればよいでしょう。文字数えサンプルを参照してください。