Side navigation
#6029 closed bug (invalid)
Opened February 04, 2010 05:59PM UTC
Closed February 04, 2010 06:07PM UTC
cross domain POST results in OPTIONS request
Reported by: | proppy | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.4.2 |
Component: | ajax | Version: | 1.4.1 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Server has the following header directive:
Header set Access-Control-Allow-Origin "*"
Client does the following request from another domain:
$.ajax({ type: 'POST', url: "http://wetball.mekensleep.com/WEBSERVICE/editor/addItems", data: '[{"collectibleId": 28, "latitude": 42.0, "longitude": 42.0}]', success: function(data){ console.log("success", data); }, error: function(XMLHttpRequest, textStatus, errorThrown){ console.log("error", textStatus); }, dataType: 'json', processData: false, contentType: 'application/json' });
The following request is received by the server instead of post:
93.1.48.165 - - [04/Feb/2010:11:57:00 -0600] "OPTIONS /WEBSERVICE/editor/addItems HTTP/1.1" 400 274 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)"
If I apply the attached patch (which disable some cross domain firefox specifics), the POST request get sent, and processed:
85.168.102.10 - - [04/Feb/2010:11:58:25 -0600] "POST /WEBSERVICE/editor/addItems HTTP/1.1" 200 42 "http://playground.mekensleep.com/proppy/playground/map.html" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7"
Feel free to tell me if you need more information
Attachments (1)
Change History (1)
Changed February 04, 2010 06:07PM UTC by comment:1
component: | unfilled → ajax |
---|---|
resolution: | → invalid |
status: | new → closed |
Obviously we're not going to land that patch, as-is (it deletes a large part of the Ajax logic). The OPTIONS is being sent because you need to negotiate before doing a cross-domain request of this nature.
It looks like since you're specifying a non-simple content-type the server has to do a pre-flight request. You can read up more on it here:
http://www.w3.org/TR/access-control/#terminology