この色合いは...メタセコ使いですか?! (ナカマー)
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); } } }