OsRequestURL
From OpenSimulator
(Difference between revisions)
Line 36: | Line 36: | ||
}</source> | }</source> | ||
+ | <source lang="lsl"> | ||
+ | /* Respond to incoming HTTP requests | ||
+ | Description: | ||
+ | This script demonstrates handling HTTP requests in OpenSimulator. | ||
+ | It provides a simple web server that responds to GET and POST requests and logs the received data. | ||
+ | Usage: | ||
+ | Attach this script to an in-world object in OpenSimulator. | ||
+ | When the object is rezzed and initialized, it will request permissions for handling HTTP requests using osRequestURL. | ||
+ | The script listens for incoming HTTP requests, and when a request is received, | ||
+ | it logs whether the request was granted or denied, | ||
+ | and it processes GET and POST requests by calling the RequestReceived function. | ||
+ | The RequestReceived function sends a response to the client with a status code of 200 (OK) | ||
+ | and logs the received data in local chat. It also decodes URL-encoded data using llUnescapeURL. | ||
+ | You can monitor the HTTP request handling in the local chat of the object, as specified in the llOwnerSay calls. | ||
+ | */ | ||
+ | RequestReceived(key id, string query) { | ||
+ | llHTTPResponse(id, 200, query + " OK"); // Send a response | ||
+ | query = llUnescapeURL(query); // Decode URL-encoded data | ||
+ | llSay(0, query); // Log the received data to local chat | ||
+ | } | ||
+ | |||
+ | default { | ||
+ | state_entry() { | ||
+ | osRequestURL(["allowXss"]); // Request permissions for handling HTTP requests | ||
+ | } | ||
+ | |||
+ | // Handle incoming HTTP requests | ||
+ | http_request(key id, string method, string body) { | ||
+ | if (method == URL_REQUEST_GRANTED) | ||
+ | llOwnerSay("URL_REQUEST_GRANTED\n" + body); // Log URL_REQUEST_GRANTED | ||
+ | |||
+ | if (method == URL_REQUEST_DENIED) | ||
+ | llOwnerSay("URL_REQUEST_DENIED"); // Log URL_REQUEST_DENIED | ||
+ | |||
+ | if (method == "GET") | ||
+ | RequestReceived(id, llGetHTTPHeader(id, "x-query-string")); // Process GET requests | ||
+ | |||
+ | if (method == "POST") | ||
+ | RequestReceived(id, body); // Process POST requests | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
|description=Requests one HTTP:// url (opensim version 0.9 or over) | |description=Requests one HTTP:// url (opensim version 0.9 or over) | ||
Option supported : "allowXss" - Add 'Access-Control-Allow-Origin: *' to response header | Option supported : "allowXss" - Add 'Access-Control-Allow-Origin: *' to response header | ||
|additional_info=This function was added in 0.9.0-post-fixes | |additional_info=This function was added in 0.9.0-post-fixes | ||
}} | }} |
Latest revision as of 02:31, 20 October 2023
key osRequestURL(list options)
| |
Requests one HTTP:// url (opensim version 0.9 or over)
Option supported : "allowXss" - Add 'Access-Control-Allow-Origin: *' to response header | |
Threat Level | Moderate |
Permissions | No permissions specified |
Extra Delay | 0 seconds |
Example(s) | |
// //osRequestURL example // RequestReceived (key id, string query) { llHTTPResponse (id,200,query+" OK"); query = llUnescapeURL(query); llSay (0, query); } default { state_entry() { osRequestURL ([ "allowXss" ]); } http_request(key id, string method, string body) { if (method == URL_REQUEST_GRANTED) llOwnerSay ("URL_REQUEST_GRANTED" +"\n" +body); if (method == URL_REQUEST_DENIED) llOwnerSay ("URL_REQUEST_DENIED"); if (method == "GET") RequestReceived (id, llGetHTTPHeader(id,"x-query-string")); if (method == "POST") RequestReceived (id, body); } } /* Respond to incoming HTTP requests Description: This script demonstrates handling HTTP requests in OpenSimulator. It provides a simple web server that responds to GET and POST requests and logs the received data. Usage: Attach this script to an in-world object in OpenSimulator. When the object is rezzed and initialized, it will request permissions for handling HTTP requests using osRequestURL. The script listens for incoming HTTP requests, and when a request is received, it logs whether the request was granted or denied, and it processes GET and POST requests by calling the RequestReceived function. The RequestReceived function sends a response to the client with a status code of 200 (OK) and logs the received data in local chat. It also decodes URL-encoded data using llUnescapeURL. You can monitor the HTTP request handling in the local chat of the object, as specified in the llOwnerSay calls. */ RequestReceived(key id, string query) { llHTTPResponse(id, 200, query + " OK"); // Send a response query = llUnescapeURL(query); // Decode URL-encoded data llSay(0, query); // Log the received data to local chat } default { state_entry() { osRequestURL(["allowXss"]); // Request permissions for handling HTTP requests } // Handle incoming HTTP requests http_request(key id, string method, string body) { if (method == URL_REQUEST_GRANTED) llOwnerSay("URL_REQUEST_GRANTED\n" + body); // Log URL_REQUEST_GRANTED if (method == URL_REQUEST_DENIED) llOwnerSay("URL_REQUEST_DENIED"); // Log URL_REQUEST_DENIED if (method == "GET") RequestReceived(id, llGetHTTPHeader(id, "x-query-string")); // Process GET requests if (method == "POST") RequestReceived(id, body); // Process POST requests } } | |
Notes | |
This function was added in 0.9.0-post-fixes |