この色合いは...メタセコ使いですか?! (ナカマー)
MasterPoppy Amat
MasterPoppy Amat による投稿
コミュニティ フォーラム -> 質問コーナー -> osSetContentTypeの引数 -> Re: osSetContentTypeの引数
isekiさん
検証ありがとうございます。
SecondLife Gridでは送信されていてJOGでは拾われていないCookie情報がある(?)
ということでしょうかね。
根本的にサーバプログラムが別物ならしょうがないですが...
OpenSIMの設定で件のCookie、またはえくすさんの言及されているカスタムHeader(?)を要求するような設定があったりしないでしょうか。
*某国出張中につき当方での詳しい検証が後日になります。
いろいろ検証いただいてるのに反応が鈍くて恐縮です。
コミュニティ フォーラム -> 質問コーナー -> osSetContentTypeの引数 -> Re: osSetContentTypeの引数
えくすさん
検証ありがとうございます。
先のisekiさんの検証にもあるようにサーバのコード上はCookieからのID情報でcontent-typeを割り振っているようだということもあり、X-SecondLife-xのHeader情報が足りない件が直接の原因か定かではありませんが、どうやらJOGに接続したときとSecondLife Gridに接続したときでは挙動が違う原因がみえてきたようですね。
某国出張中につき帰ってからになりますが、こちらでもUserAgentのあたりから同じ切り口で検証してみます。
コミュニティ フォーラム -> 質問コーナー -> osSetContentTypeの引数 -> Re: osSetContentTypeの引数
サンプルコードの使い方を補足します。
実行するとチャットウインドウにhttp-inのサーバURLが出力されるので、
FireStromだとURLを右クリック > [内蔵ブラウザで開く] とすると内蔵ブラウザで開きます。
コミュニティ フォーラム -> 質問コーナー -> osSetContentTypeの引数 -> Re: osSetContentTypeの引数
ご教示ありがとうございます。
llSetContentTypeもosSetContentTypeも実装済みのはずだという前提で切り分けテストをしてみました。
llSetContentType の仕様ではCONTENT_TYPE_HTML(=integerの1)を指定している場合
Caveatsに記載ある条件のとき(OwnerがVIewer内蔵ブラウザでアクセスしたときのみ)にHTML文書として表示されるはずです。
Case(A)
llSetContentTypeでのテスト (JOG)…意図しない挙動(textとして表示される)
Code: llSetContentType(id, CONTENT_TYPE_HTML);
https://gyazo.com/88d44c7afe192374eaab0bcb025d7832
Case(B)
osSetContentTypeでのテスト (JOG)…意図しない挙動(textとして表示される)
Code: osSetContentType(id, "text/html");
https://gyazo.com/66581236e15ce6a6a255cfe474aa0ddc
Case(C)
llSetContentTypeでのテスト (SecondLife Grid)…意図した挙動(htmlとして表示される)
Code: llSetContentType(id, CONTENT_TYPE_HTML);
https://gyazo.com/1900a4d5f0acf0d1121a6bdfea5ff114
まとめると
SecondLife Gridでは正しくHTMLとして表示される(サーバからtext/htmlで返っている)が、
JOGではllSetContentTypeとosSetContentTypeのいずれもtextとして表示される(text/plainが返っている)ということになりそうです。
おそらく内的にはUser Agentとかで区別してしてて、その辺が間違ってるんじゃないかと言う気がするんですが、
そんな細かいコードがどこにあるのかわからず推測の域をでません。 
テストに使用したコードです。(line.32-33(一番下らへん)をコメントアウトしてLSL<->OSSLを切り替えます)
key url_request;
string HTML_BODY =
"<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>";
default
{
    state_entry()
    {
        url_request = llRequestURL();
    }
 
    http_request(key id, string method, string body)
    {
        if (url_request == id)
        {
            url_request = "";
            if (method == URL_REQUEST_GRANTED){
                llOwnerSay("URL: " + body);
            }
            else if (method == URL_REQUEST_DENIED){
                llOwnerSay("Something went wrong, no url:\n" + body);
            }
        }
        else{
            //llSetContentType(id, CONTENT_TYPE_HTML);
            osSetContentType(id, "text/html");
            llHTTPResponse(id, 200, HTML_BODY);
        }
    }
}