GM.xmlHttpRequest: Difference between revisions

From GreaseSpot Wiki
Jump to navigationJump to search
Gholk (talk | contribs)
→‎Response Object: responseHeaders is string with CRLF
 
(35 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:GM_xmlhttpRequest}}
== Description ==


Punk not dead  <a href=" http://30boxes.com/buddy?id=8336559 ">free animal pictures and movies galleries</a>  41968 <a href=" http://30boxes.com/buddy?id=8336589 ">free animal cumshots</a>  16007 <a href=" http://30boxes.com/buddy?id=8336550 ">free hidden animal sex videos</a>  hiavym <a href=" http://30boxes.com/buddy?id=8336602 ">pics of animals having sex</a>  =-DD <a href=" http://30boxes.com/buddy?id=8336569 ">f xxx animal vids</a>  aru <a href=" http://30boxes.com/buddy?id=8336544 ">pprn tube sex horse</a>  hyv <a href=" http://30boxes.com/buddy?id=8336593 ">animal adult dating for people</a>  :-OO <a href=" http://30boxes.com/buddy?id=8336542 ">sex horse pofn tube</a>  702 <a href=" http://30boxes.com/buddy?id=8336577 ">animal sex with human free video</a>  0704 <a href=" http://30boxes.com/buddy?id=8336540 ">animal oral topless boob</a>  449840 <a href=" http://30boxes.com/buddy?id=8336594 ">dog std</a>  %]] <a href=" http://30boxes.com/buddy?id=8336568 ">anal beastiality clips</a>  pmhwv <a href=" http://30boxes.com/buddy?id=8336561 ">animal print pics</a>  36897 <a href=" http://30boxes.com/buddy?id=8336608 ">sex dog porno gube</a>  52176 <a href=" http://30boxes.com/buddy?id=8336599 ">poorn sex dog tube</a>  562246 <a href=" http://30boxes.com/buddy?id=8336548 ">chick fucks horse</a>  kajsbs <a href=" http://30boxes.com/buddy?id=8336604 ">free dog porn streaming</a>  =PPP <a href=" http://30boxes.com/buddy?id=8336606 ">tub esex porno dog</a>  :PP <a href=" http://30boxes.com/buddy?id=8336545 ">bare butt girls on horses</a>  738 <a href=" http://30boxes.com/buddy?id=8336555 ">free sex girl with animal clip</a>  8P <a href=" http://30boxes.com/buddy?id=8336560 ">zoo sex tube frre</a>  565 <a href=" http://30boxes.com/buddy?id=8336581 ">dogs fucking girls free videos</a>  139 <a href=" http://30boxes.com/buddy?id=8336566 ">woman gets fucked by horse</a>  22804 <a href=" http://30boxes.com/buddy?id=8336563 ">ebony doggystyle extreme</a>  :DDD <a href=" http://30boxes.com/buddy?id=8336554 ">extreme animal movies</a>  oag <a href=" http://30boxes.com/buddy?id=8336546 ">free animal on animal sex</a>  kktfsb <a href=" http://30boxes.com/buddy?id=8336597 ">steel horse tube steps</a>  lrpnvj <a href=" http://30boxes.com/buddy?id=8336556 ">dog frienldy beaches north carolina</a>  583 <a href=" http://30boxes.com/buddy?id=8336578 ">3d horse sex</a>  0606 <a href=" http://30boxes.com/buddy?id=8336547 ">animated dead animal pics</a>  oidblq
This method performs a similar function to the standard [http://developer.mozilla.org/en/docs/XMLHttpRequest XMLHttpRequest] object, but allows these requests to cross the [https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript same origin policy] boundaries.


good material thanks <a href=" http://30boxes.com/buddy?id=8336637 ">animals fucking femaless</a>  djnq <a href=" http://30boxes.com/buddy?id=8336657 ">animal ranch adult</a>  84176 <a href=" http://30boxes.com/buddy?id=8336632 ">rain forest animals pics</a>  qgaqcl <a href=" http://30boxes.com/buddy?id=8336663 ">girls fucked by barn yard animals</a>  633 <a href=" http://30boxes.com/buddy?id=8336651 ">free adult movies sex with animals</a>  momou <a href=" http://30boxes.com/buddy?id=8336617 ">tramadol for dogs with bladder inflammation</a>  jeah <a href=" http://30boxes.com/buddy?id=8336658 ">sex prn tube dog</a>  >:-((( <a href=" http://30boxes.com/buddy?id=8336616 ">animals fuck girl</a>  57523 <a href=" http://30boxes.com/buddy?id=8336653 ">hard core dogging</a>  wpvij <a href=" http://30boxes.com/buddy?id=8336609 ">zoo homemade movies</a>  546327 <a href=" http://30boxes.com/buddy?id=8336650 ">eagle feather horseback riding</a>  wngqjs <a href=" http://30boxes.com/buddy?id=8336660 ">zoo free sdx</a>  4775 <a href=" http://30boxes.com/buddy?id=8336640 ">girl and black dog</a>  2212 <a href=" http://30boxes.com/buddy?id=8336669 ">free dog porn pics</a>  xobzs <a href=" http://30boxes.com/buddy?id=8336630 ">amature wife doggystyle</a>  8-( <a href=" http://30boxes.com/buddy?id=8336667 ">movei zoo sxe free</a>  3147 <a href=" http://30boxes.com/buddy?id=8336662 ">fuck free dog stores movies</a>  =]]] <a href=" http://30boxes.com/buddy?id=8336668 ">kids comforter horses</a>  dzrfdp <a href=" http://30boxes.com/buddy?id=8336622 ">free sed movei zoo</a>  8]] <a href=" http://30boxes.com/buddy?id=8336634 ">farm sex pics strange animals</a>  xpiivi <a href=" http://30boxes.com/buddy?id=8336638 ">bi sex pics with animals</a>  lxsyak <a href=" http://30boxes.com/buddy?id=8336649 ">girls fuck horse free</a>  denzfz <a href=" http://30boxes.com/buddy?id=8336655 ">zoo animal porn</a>  djii <a href=" http://30boxes.com/buddy?id=8336646 ">female sex with animal free video</a>  902277 <a href=" http://30boxes.com/buddy?id=8336633 ">swedish zoo sex</a>  ffua <a href=" http://30boxes.com/buddy?id=8336623 ">doggy boat ladder</a>  8-O <a href=" http://30boxes.com/buddy?id=8336661 ">dog orno sex</a>  >:( <a href=" http://30boxes.com/buddy?id=8336636 ">free female animal sex</a>  vrng <a href=" http://30boxes.com/buddy?id=8336654 ">porno dog sex tune</a>  >:OO <a href=" http://30boxes.com/buddy?id=8336626 ">dog breast swelling</a>  xbgy
== Syntax ==


What's your number? <a href=" http://posterous.com/people/YCboIcG3ac9 ">preteen sexual rape</a> >:-PPP <a href=" http://posterous.com/people/YCbopngZXbj ">nonude preteen underwear</awzbyx <a href=" http://posterous.com/people/YCboJbEY8Lv ">hot preteen love</afwcz <a href=" http://posterous.com/people/YCbopPnR1Pr ">bbs preteen lovers
{{Function|GM.xmlHttpRequest|details}}
</a>  >:[[ <a href=" http://posterous.com/people/YCboIERrOVj ">preteen beauties bbs</a> pacznd <a href=" http://posterous.com/people/YCbopizcjsZ ">pre teens amateur</a> 3321 <a href=" http://posterous.com/people/YCbopni8lHz ">preteen natasha pics</a> itjs <a href=" http://posterous.com/people/YCboISIXcMF ">livedoor pink preteens</a> azdid <a href=" http://posterous.com/people/YCbopiBt6vv ">preteen r ygold</a> zqje <a href=" http://posterous.com/people/YCboISK5BiV ">preteen teen girlies</a> 8-OO <a href=" http://posterous.com/people/YCbopiESi4h ">ukraine preteen list</a> rdtms <a href=" http://posterous.com/people/YCbopKO09KV ">gay preteen girlz</a> 73680 <a href=" http://posterous.com/people/YCboIhoZcqJ ">yuong preteen girls</a> =DDD <a href=" http://posterous.com/people/YCbopG6cw2B ">top100 preteen girls</a> yeyxt <a href=" http://posterous.com/people/YCboJ6Xav3b ">preteen nude buds</a> xhcopb <a href=" http://posterous.com/people/YCbopPsoBUt ">preteen sleep pics</a> 98940 <a href=" http://posterous.com/people/YCbopPkrQgF ">preteen pregnant pix</a> >:]]] <a href=" http://posterous.com/people/YCbopPjjrKp ">preteen pantie thumb</a15104 <a href=" http://posterous.com/people/YCboIJvQh4R ">lilamber com preteen</arju <a href=" http://posterous.com/people/YCboJ2aPhfP ">preteen galleries rapidshare</a> 13715 <a href=" http://posterous.com/people/YCboIcJslKV ">pre teeny models</aljfd <a href=" http://posterous.com/people/YCbopnnOkiR ">preteen video chat</a8-[[[ <a href=" http://posterous.com/people/YCbopwEkrzr ">preteen foot forum</a=]] <a href=" http://posterous.com/people/YCbopwGBeBX ">preteen blowjob photos</a> hvgh <a href=" http://posterous.com/people/YCboIXpCrYJ ">preteen japanese nudes</a> qebste <a href=" http://posterous.com/people/YCboIJy747n ">msn preteen groups</a> vcjvdy <a href=" http://posterous.com/people/YCbopKJszFT ">ls preteen pussies</a> iaof <a href=" http://posterous.com/people/YCbopiuEJnX ">tight virgin preteens</a> flrexr <a href=" http://posterous.com/people/YCboJ26hHaN ">preteen nonnaked photos</a> >:PPP <a href=" http://posterous.com/people/YCboIJmL6UN ">pre teens fucking</a> eopkc
 
Compatibility: [[Version_history#4.0_2|Greasemonkey 4.0+]]
 
=== Arguments ===
 
This method only takes one argument, the <code>details</code> object.
Described below are the ''properties'' that may be defined on that object.
See [[#Examples]] for more detail on how to use each.
 
Fields:
 
; <code>binary</code>
: <code>Boolean</code> Optional, default false. When true, the <code>data</code> is sent as a Blob.
; <code>context</code>
: <code>Object</code> (Compatibility: [[Version_history#1.10|1.10+]]) Optional, any object. This object will also be the <code>context</code> property of the [[#Response Object]].
; <code>data</code>
: <code>String</code> Optional. Data to send in the request body. Usually for <code>POST</code> method requests. <sup>[[#Notes|[1]]]</sup>
; <code>headers</code>
: <code>Object</code> Optional. A set of headers to include in the request. <sup>[[#Notes|[2]]]</sup>
; <code>method</code>
: <code>String</code> Required. Type of HTTP request to make (E.G. <code>"GET"</code>, <code>"POST"</code>)
; <code>overrideMimeType</code>
: <code>String</code> Optional. A MIME type to specify with the request (E.G. <code>"text/html; charset=ISO-8859-1"</code>).
; <code>password</code>
: <code>String</code> Optional. Password to use for authentication purposes.
; <code>responseType</code>
: <code>String</code> Optional. Decode the response as specified type. Accepted values are <code>""</code>, <code>"arraybuffer"</code>, <code>"blob"</code>, <code>"document"</code>, <code>"json"</code>, <code>"text"</code>, <code>"ms-stream"</code>. Default value is <code>"text"</code>. See [https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType XMLHttpRequest responseType].
; <code>synchronous</code>
: <code>Boolean</code> Defaults to false. When true, this is a ''synchronous'' request. '''Be careful''': The entire Firefox UI will be locked and frozen until the request completes.  In this mode, more data will be available in the [[#Returns|return value]].
; <code>timeout</code>
: <code>Number</code> The number of milliseconds to wait before terminating the call; zero (the default) means wait forever.
; <code>upload</code>
: <code>Object</code> Optional. Object containing optional function callbacks (<code>onabort</code>, <code>onerror</code>, <code>onload</code>, <code>onprogress</code>) to monitor the upload of data. Each is passed one argument, the [[#Response Object]].
; <code>url</code>
: <code>String</code> Required. The URL to make the request to.  Must be an absolute URL, beginning with the scheme. May be relative to the current page.
; <code>user</code>
: <code>String</code> Optional. User name to use for authentication purposes.
 
Event handlers:
 
; <code>onabort</code>
: <code>Function</code> Optional. Will be called when the request is aborted. Passed one argument, the [[#Response Object]].
; <code>onerror</code>
: <code>Function</code> Optional. Will be called if an error occurs while processing the request. Passed one argument, the [[#Response Object]].
; <code>onload</code>
: <code>Function</code> Optional. Will be called when the request has completed successfully. Passed one argument, the [[#Response Object]].
; <code>onprogress</code>
: <code>Function</code> Optional. Will be called when the request progress changes.  Passed one argument, the [[#Response Object]].
; <code>onreadystatechange</code>
: <code>Function</code> Optional. Will be called repeatedly while the request is in progress. Passed one argument, the [[#Response Object]].
; <code>ontimeout</code>
: <code>Function</code> Optional. Will be called if/when the request times out.  Passed one argument, the [[#Response Object]].
 
==== Response Object ====
 
All of the callback functions defined in the <code>details</code> object, if called, will receive this type of object as their first (and only) argument.
The data available will vary slightly, depending on the type of callback.
 
Properties based on a standard [https://developer.mozilla.org/en/xmlhttprequest#Properties XMLHttpRequest] object:
* <code>readyState</code>
* <code>responseHeaders</code>: <code>String</code>, with <code>CRLF</code> line terminators.
* <code>responseText</code>
* <code>status</code>
* <code>statusText</code>
 
Greasemonkey custom properties:
* <code>context</code><br><code>Object</code> The same object passed into the original request.
<!-- Not yet in 4.x
* <code>finalUrl</code><br><code>String</code> (Compatibility: [[Version_history#0.8.20080609.0|0.8.0+]]) The final URL requested, if <code>Location</code> redirects were followed.
-->
 
Properties for <code>progress</code> callbacks, based on [https://developer.mozilla.org/En/nsIDOMProgressEvent nsIDOMProgressEvent]:
* <code>lengthComputable</code>
* <code>loaded</code>
* <code>total</code>
 
== Returns ==
 
<code>undefined</code>


== Examples ==
== Examples ==
Line 13: Line 91:


<pre class='sample'>
<pre class='sample'>
GM_xmlhttpRequest({
GM.xmlHttpRequest({
   method: "GET",
   method: "GET",
   url: "http://www.example.com/",
   url: "http://www.example.com/",
Line 25: Line 103:


<pre class='sample'>
<pre class='sample'>
GM_xmlhttpRequest({
GM.xmlHttpRequest({
   method: "GET",
   method: "GET",
   url: "http://www.example.net/",
   url: "http://www.example.net/",
Line 33: Line 111:
   },
   },
   onload: function(response) {
   onload: function(response) {
    var responseXML = null;
     // Inject responseXML into existing Object (only appropriate for XML content).
     // Inject responseXML into existing Object (only appropriate for XML content).
     if (!response.responseXML) {
     if (!response.responseXML) {
       response.responseXML = new DOMParser()
       responseXML = new DOMParser()
         .parseFromString(response.responseText, "text/xml");
         .parseFromString(response.responseText, "text/xml");
     }
     }


     GM_log([
     console.log([
       response.status,
       response.status,
       response.statusText,
       response.statusText,
Line 46: Line 125:
       response.responseText,
       response.responseText,
       response.finalUrl,
       response.finalUrl,
       response.responseXML
       responseXML
     ].join("\n"));
     ].join("\n"));
   }
   }
Line 57: Line 136:


<pre class='sample'>
<pre class='sample'>
GM_xmlhttpRequest({
GM.xmlHttpRequest({
   method: "POST",
   method: "POST",
   url: "http://www.example.net/login",
   url: "http://www.example.net/login",
Line 77: Line 156:


<pre class='sample'>
<pre class='sample'>
GM_xmlhttpRequest({
GM.xmlHttpRequest({
   url: "http://www.example.com",
   url: "http://www.example.com",
   method: "HEAD",
   method: "HEAD",
   onload: function(response) {
   onload: function(response) {
     GM_log(response.responseHeaders);
     console.log(response.responseHeaders);
   }
   }
});</pre>
});</pre>
Line 87: Line 166:
== Notes ==
== Notes ==


<sup>1</sup>
If the <code>data</code> field contains form-encoded data, you usually must also set the header <code>'Content-Type': 'application/x-www-form-urlencoded'</code> in the <code>headers</code> field.
Note that if the <code>data</code> field contains form-encoded data, you usually must also set the header <code>'Content-Type': 'application/x-www-form-urlencoded'</code> in the <code>headers</code> field.
 
<sup>2</sup>
Some headers may not actually work through GM_xmlhttpRequest.
For example, the <code>Referer</code> header cannot be overriden.
[http://groups.google.com/group/greasemonkey-dev/browse_thread/thread/77c94cc17c6b2669]
[http://userscripts.org/forums/1/topics/1302]


[[Category:API_Reference|X]]
[[Category:API_Reference|X]]

Latest revision as of 12:57, 23 August 2021

Description

This method performs a similar function to the standard XMLHttpRequest object, but allows these requests to cross the same origin policy boundaries.

Syntax

function GM.xmlHttpRequest( details )

Compatibility: Greasemonkey 4.0+

Arguments

This method only takes one argument, the details object. Described below are the properties that may be defined on that object. See #Examples for more detail on how to use each.

Fields:

binary
Boolean Optional, default false. When true, the data is sent as a Blob.
context
Object (Compatibility: 1.10+) Optional, any object. This object will also be the context property of the #Response Object.
data
String Optional. Data to send in the request body. Usually for POST method requests. [1]
headers
Object Optional. A set of headers to include in the request. [2]
method
String Required. Type of HTTP request to make (E.G. "GET", "POST")
overrideMimeType
String Optional. A MIME type to specify with the request (E.G. "text/html; charset=ISO-8859-1").
password
String Optional. Password to use for authentication purposes.
responseType
String Optional. Decode the response as specified type. Accepted values are "", "arraybuffer", "blob", "document", "json", "text", "ms-stream". Default value is "text". See XMLHttpRequest responseType.
synchronous
Boolean Defaults to false. When true, this is a synchronous request. Be careful: The entire Firefox UI will be locked and frozen until the request completes. In this mode, more data will be available in the return value.
timeout
Number The number of milliseconds to wait before terminating the call; zero (the default) means wait forever.
upload
Object Optional. Object containing optional function callbacks (onabort, onerror, onload, onprogress) to monitor the upload of data. Each is passed one argument, the #Response Object.
url
String Required. The URL to make the request to. Must be an absolute URL, beginning with the scheme. May be relative to the current page.
user
String Optional. User name to use for authentication purposes.

Event handlers:

onabort
Function Optional. Will be called when the request is aborted. Passed one argument, the #Response Object.
onerror
Function Optional. Will be called if an error occurs while processing the request. Passed one argument, the #Response Object.
onload
Function Optional. Will be called when the request has completed successfully. Passed one argument, the #Response Object.
onprogress
Function Optional. Will be called when the request progress changes. Passed one argument, the #Response Object.
onreadystatechange
Function Optional. Will be called repeatedly while the request is in progress. Passed one argument, the #Response Object.
ontimeout
Function Optional. Will be called if/when the request times out. Passed one argument, the #Response Object.

Response Object

All of the callback functions defined in the details object, if called, will receive this type of object as their first (and only) argument. The data available will vary slightly, depending on the type of callback.

Properties based on a standard XMLHttpRequest object:

  • readyState
  • responseHeaders: String, with CRLF line terminators.
  • responseText
  • status
  • statusText

Greasemonkey custom properties:

  • context
    Object The same object passed into the original request.

Properties for progress callbacks, based on nsIDOMProgressEvent:

  • lengthComputable
  • loaded
  • total

Returns

undefined

Examples

Bare Minimum

GM.xmlHttpRequest({
  method: "GET",
  url: "http://www.example.com/",
  onload: function(response) {
    alert(response.responseText);
  }
});

GET request

GM.xmlHttpRequest({
  method: "GET",
  url: "http://www.example.net/",
  headers: {
    "User-Agent": "Mozilla/5.0",    // If not specified, navigator.userAgent will be used.
    "Accept": "text/xml"            // If not specified, browser defaults will be used.
  },
  onload: function(response) {
    var responseXML = null;
    // Inject responseXML into existing Object (only appropriate for XML content).
    if (!response.responseXML) {
      responseXML = new DOMParser()
        .parseFromString(response.responseText, "text/xml");
    }

    console.log([
      response.status,
      response.statusText,
      response.readyState,
      response.responseHeaders,
      response.responseText,
      response.finalUrl,
      responseXML
    ].join("\n"));
  }
});

POST request

When making a POST request, most sites require the Content-Type header to be defined as such:

GM.xmlHttpRequest({
  method: "POST",
  url: "http://www.example.net/login",
  data: "username=johndoe&password=xyz123",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  onload: function(response) {
    if (response.responseText.indexOf("Logged in as") > -1) {
      location.href = "http://www.example.net/dashboard";
    }
  }
});

HEAD request

As defined in HTTP, you may issue a HEAD request to get the response headers, without receiving the entire response body.

GM.xmlHttpRequest({
  url: "http://www.example.com",
  method: "HEAD",
  onload: function(response) {
    console.log(response.responseHeaders);
  }
});

Notes

If the data field contains form-encoded data, you usually must also set the header 'Content-Type': 'application/x-www-form-urlencoded' in the headers field.