Difference between revisions of "LlGetHTTPHeader"

From Second Life Wiki
Jump to navigation Jump to search
m
m
Line 60: Line 60:
                 llSay(0,"URL: " + body);
                 llSay(0,"URL: " + body);
                 if(llGetAgentSize(llGetOwner()))
                 if(llGetAgentSize(llGetOwner()))
                     llURL(llGetOwner(), body);
                     llLoadURL(llGetOwner(), body);
             }
             }
             else if (method == URL_REQUEST_DENIED)
             else if (method == URL_REQUEST_DENIED)

Revision as of 10:56, 13 July 2009

Summary

Function: string llGetHTTPHeader( key request_id, string header );

Returns a string that is the value for header for request_id.

• key request_id A valid HTTP request key.
• string header Header value name.

Specification

Supported Headers

Sample URL: https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322/foo/bar?arg=gra

header description example
"x-script-url" The base url, as originally received from llRequestURL/llRequestSecureURL https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322
"x-path-info" Any trailing path information from the requested url /foo/bar
"x-query-string" Any query arguments, the text past the first "?" in the url arg=gra
"x-remote-ip" IP address of the host that made the request
"user-agent" The user-agent header as reported by the requester

Caveats

  • LSL is not a CGI environment
    • "Content-Type" is an example of a normal header name, in a CGI environment the name would be "HTTP_CONTENT_TYPE".
  • This header information is valid for 30 seconds, or until llHTTPResponse is called.
All Issues ~ Search JIRA for related Bugs

Examples

<lsl> key url_request;

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)
           {
               llSay(0,"URL: " + body);
               if(llGetAgentSize(llGetOwner()))
                   llLoadURL(llGetOwner(), body);
           }
           else if (method == URL_REQUEST_DENIED)
           {
               llSay(0, "Something went wrong, no url. " + body);
           }
       }
       else
       {
           list headers = [ "x-script-url", "x-path-info", "x-query-string", "x-remote-ip", "user-agent" ];
           integer pos = ~llGetListLength(headers);
           while( ++pos )
           {
               string header = llList2String(headers, pos);
               llSay(0,header + ": " + llGetHTTPHeader(id, header));
           }
           llSay(0, "body: " + body);
           llHTTPResponse(id, 200, body);
       }
   }

}

</lsl>

See Also

Events

•  http_request

Functions

•  llGetFreeURLs
•  llRequestURL
•  llRequestSecureURL
•  llReleaseURL
•  llHTTPResponse

Articles

•  LSL http server
•  "Wikipedia logo"Wikipedia:List of HTTP headers

Deep Notes

History

Search JIRA for related Issues

Signature

function string llGetHTTPHeader( key request_id, string header );