2017年7月29日土曜日

LSL の llHTTPRequest の仕様が変更されました

2017 年 7 月 18 日にメイングリッド全体に適用されたサーバーソフトウェアのアップデートにて、llHTTPRequest の仕様変更が行なわれました。

Release Notes/Second Life Server/17 - Second Life Wiki

LlHTTPRequest - Second Life Wiki

Second Life Server 17.07.11.327548 のリリースノートには記載がありませんが、セカンドライフの公式フォーラムにて、Oz Linden さんがこの件について発表されています。

llHTTPRequest changes - LSL Scripting - SecondLife Community

今回の変更点は、下記の通りです。

URL の処理の変更


llHTTPRequest に渡される URL は、Second Life Server 17.07.11.327548 以前のバージョンでは、その内容はチェックされていませんでした。
そのため、本来動作してはいけないスクリプトが動作していました。

Second Life Server 17.07.11.327548 以降では URL が正しく扱われるようになりましたので、これ以降のバージョンでは、本来動作してはいけなかったスクリプトは動作しなくなります。

URL 内の制御文字

制御文字は、改行などの特殊な文字のことです。

URL が正しく処理されていないというバグ(不具合)を利用して、LSL で用意された HTTP ヘッダとして挿入出来るヘッダ以外のものを挿入するために、改行コードが使われていたスクリプトがありました。

Shoutcast 用などのスクリプトで、こういった処理を行なっていたものがあります。
特に、DJ ボード用のスクリプトは、この手法を使ったものが広く出回っています。
こういったスクリプトは、今後は動作しなくなります。

URL 内のスペース

スペース(空白文字)は、URL では使用出来ません。しかし、いくつかのスクリプトではそれらが使用されています。これらのスペースは、「%20」へと変換されました。

もし、他の LSL で返された値にスペースが含まれる場合には、下記の方法で値の置換を行なう必要があります。

string URL = "http://example.com/path?region=" + llEscapeURL(llGetRegionName())
※SIM 名にはスペースが含まれるものがありますが、そういう場合は llEscapeURL で変換する必要があります。

サーバーの仕組みによっては、「%20」ではなくて、「+」に変換しないといけない場合もあります。

ヘッダの値の変更

HTTP_USER_AGENT パラメータの追加

URL の処理の変更により、LSL のバグを利用した HTTP_USER_AGENT ヘッダの追加は出来なくなりました。
そこで、HTTP_USER_AGENT パラメータが新しく追加されました。

HTTP_USER_AGENT パラメータを使用すると、User-Agent ヘッダに任意の値を設定することが出来ます。
User-Agent ヘッダを要求するサーバーでは、このパラメータを利用してください。


Accept ヘッダの挙動を変更

複数の Accept ヘッダを、許可された全ての MIME-type を持つ一つの長い Accept ヘッダにすることで、リクエストを短くしました。

User-Agent ヘッダの値の変更

デフォルトの User-Agent ヘッダが変更になりました。

変更前Second Life LSL
変更後Second-Life-LSL

サーバー側で、 LSL の従来のデフォルトの User-Agent ヘッダ“Second Life LSL”が来ることを前提に処理を行なうような仕組みになっている場合は、サーバー側での変更が必要になります。


セカンドライフでは、ユーザーの間で広く使われているテクニックは、

“バグも仕様のうち”

という感じでそのバグが温存される傾向がありましたが、Oz さんはそれらを本来の形にするのが適切であるという風に考えていらっしゃるようで、llHTTPRequest も本来意図された挙動になるように修正が行なわれました。

通常の Web の仕組みに沿って作られたスクリプトであれば問題は出ないはずですが、もし、バグを利用した方法で処理を行なっているものがあった場合は、修正が必要になります。
DJ ボードのような商品の場合は、その商品を販売しているお店などに、修正版があるかどうかを確認された方がいいです。


もしこの仕様変更によって新しい不具合が発生してしまったという場合には、フォーラムまた JIRA の方で報告を行なってください
このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿