Hello Crenshinibon Thanks for your response, now I had solved the problem
it's really because the ie request is different from chrome or ff like you said , it's because ie didn't send the option request first so now i use a buffer to receive all the data by the request even "data" , now i can get all the post data~ thanks a lot~~~ Crenshinibon於 2013年1月8日星期二UTC+8下午5時00分38秒寫道: > > And one more thing. If you define "contentType" in your ajax request you > have to add "Content-Type" to the responses "ACCESS_CONTROL_ALLOW_HEADERS". > > I think I did this in the example. > > regards > Dirk > > Am Montag, 7. Januar 2013 17:38:39 UTC+1 schrieb Crenshinibon: >> >> I remember one additional thing. IE8 tends to fall apart if it is unable >> to understand the charset defined in the Content-Type. Make sure you define >> a valid one, e.g. "utf-8". >> >> Regards, >> Dirk >> >> Am Montag, 7. Januar 2013 17:28:09 UTC+1 schrieb Crenshinibon: >>> >>> Hi, >>> >>> never heard of the AXON module. Like I said, the example above is from a >>> current project which contacts a Java (actually: Xtend) backend. There, I >>> use the "simpleframework" as a "server". No node.js. And I think it has >>> nothing to do with it. >>> >>> I did the same with node.js and can't remember doing anything very >>> special with it. To get cross site scripting working with IE8 (our >>> corporate default web server, by the way) you have to stick to the >>> following things, I am not sure if all are mandatory, though: >>> >>> - The server has to always respond with the >>> ACCESS_CONTROL_ALLOW_HEADERS / ORIGIN / METHODS headers properly >>> defined. >>> The IE8 doesn't send a OPTIONS preliminary request. >>> - Much depends on the dataType of the request. If you use "script" >>> or "jsonp" you get through without any complaint. But jQuery always uses >>> GET in this cases. >>> - If you want or must use POST, DELETE, PUT, etc. methods. You have >>> to set the dataType to "json". But than you have to define: >>> "jQuery.support.cors=true" somewhere. And your clients get the annoying >>> message I mentioned above. But only once per web page. >>> >>> Here is some working server code, using proper HTTP methods and the >>> datatype "json": >>> https://gist.github.com/4476236 >>> >>> and the client: >>> https://gist.github.com/4476269 >>> >>> and the HTML file pulling everything together: >>> https://gist.github.com/4476305 >>> >>> (IE8, jQuery 1.8.3, json2.js) >>> >>> Regards >>> Dirk >>> >>> Am Montag, 7. Januar 2013 02:39:43 UTC+1 schrieb 曾漢煒: >>>> >>>> Hello Crenshinibon >>>> >>>> I try to rewrite the node.js to use the less module than i found my >>>> ajax can work on ie9 >>>> >>>> but no I found another problem is the module named "AXON" the >>>> message-oriented >>>> socket library >>>> >>>> our team use this to push and pull the data, I think maybe this is the >>>> problem because i just use express module it can work successfully >>>> >>>> so do you have use the AXON module and should i setting anything to >>>> make sure the socket can get the ajax post data from ie9 ? >>>> >>>> Crenshinibon於 2013年1月4日星期五UTC+8下午7時59分01秒寫道: >>>>> >>>>> Hello, >>>>> >>>>> I actually had/have the same problem. It is not node.js at the >>>>> backend, but getting the f***** IE 8 to send an ajax request to a >>>>> different >>>>> target is a mess, regardless of the receiver. >>>>> >>>>> Your response looks good, quite similar to mine. My jQuery.ajax looks >>>>> like this: >>>>> >>>>> jQuery.ajax({ >>>>> >>>>> url: planview_bridge_host + 'order_number', >>>>> >>>>> dataType: 'json', >>>>> >>>>> data: "{\"code\": \"" + id + "\", \"order_number\": \"" + order >>>>> + "\"}", >>>>> >>>>> headers: { >>>>> >>>>> x_auth_user: 'dirk', >>>>> >>>>> x_auth_password: 'password', >>>>> >>>>> x_method: 'DELETE' >>>>> >>>>> }, >>>>> >>>>> contentType: 'application/json; charset=UTF-8', >>>>> >>>>> type: 'POST', >>>>> >>>>> success: function(data) { >>>>> >>>>> if (data) { >>>>> >>>>> setToNein(); >>>>> >>>>> return updateOrderNumber('undef'); >>>>> >>>>> } else { >>>>> >>>>> return alert('Falsche Daten empfangen: ' + >>>>> JSON.stringify(data)); >>>>> >>>>> } >>>>> >>>>> }, >>>>> >>>>> error: function(jqXHR, textStatus, e) { >>>>> alert(JSON.stringify(jqXHR)); >>>>> setToJa(); >>>>> >>>>> return alert('Verbindungsproblem: ' + JSON.stringify(e)); >>>>> } >>>>> }); >>>>> (The JSON object is not present in IE8 by default, I added the >>>>> json2.js by Crockford to the page) >>>>> >>>>> Actually I added: "jQuery.support.cors = true" in my client script. >>>>> And read somewhere that some browsers are unable to send requests with >>>>> methods other than POST and GET. So I reverted to POST everything and >>>>> send >>>>> the method really meant as a custom header field ("x_method"). >>>>> >>>>> It works despite the fact that when a user for the first time tries to >>>>> send a request, he is asked if he truly want to send data to a different >>>>> host. >>>>> >>>>> Hope it helps a little. >>>>> >>>>> Regards >>>>> Dirk >>>>> >>>>> Am Freitag, 4. Januar 2013 03:48:43 UTC+1 schrieb [email protected]: >>>>>> >>>>>> Hello Jacob >>>>>> >>>>>> we have setting the response header like this >>>>>> >>>>>> app.all('*', function(req, res, next) { >>>>>> res.header("Access-Control-Allow-Origin", "*"); >>>>>> res.header("Access-Control-Allow-Headers", "X-Requested-With"); >>>>>> >>>>>> res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); >>>>>> res.header("X-Powered-By",' 3.2.1') >>>>>> res.header("Content-Type", "application/json;charset=utf-8"); >>>>>> if(req.method==='OPTIONS') >>>>>> res.send(200); >>>>>> else >>>>>> next(); >>>>>> }); >>>>>> >>>>>> so is there anything we have to setting on node.js server? >>>>>> >>>>>> and how could i check the second request can be received >>>>>> successfully? >>>>>> >>>>>> or did you have any ie ajax success sample can show me? because it >>>>>> is really strange >>>>>> >>>>>> thanks a lot Jacob~ >>>>>> >>>>>> >>>>>> Jacob於 2013年1月4日星期五UTC+8上午1時51分14秒寫道: >>>>>>> >>>>>>> When doing a cross domain POST, the browser usually send two HTTP >>>>>>> requests. The first with HTTP method OPTIONS before sending the >>>>>>> actual request. Your server has to flag the request as okay before the >>>>>>> browser proceeds. >>>>>>> >>>>>>> Your server might be receiving the options request only, which would >>>>>>> have no body. >>>>>>> >>>>>>> >>>>>>> On Thu, Jan 3, 2013 at 8:03 AM, Tiger Nassau Inc < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> You may have cors (cross origin) problems - its kind if tricky but >>>>>>>> you probsbly need a header to allow - search on this >>>>>>>> >>>>>>>> Sent from my LG Mobile >>>>>>>> >>>>>>>> [email protected] wrote: >>>>>>>> >>>>>>>> >hello >>>>>>>> > >>>>>>>> >if we use chrome or firefox we can't successfully get the jquery >>>>>>>> ajax post >>>>>>>> >data, >>>>>>>> > >>>>>>>> >but we found if we use ie9 or ie8 to send POST data by jquery ajax >>>>>>>> , >>>>>>>> >node.js just receive empty body {} >>>>>>>> > >>>>>>>> >even we change the header like content-type to application/json or >>>>>>>> >text/plain and Accept value it still didn't work >>>>>>>> > >>>>>>>> >so is here anyone have the same problem or have any solution , >>>>>>>> please help >>>>>>>> >me thanks a lot >>>>>>>> > >>>>>>>> >i paste my code below >>>>>>>> > >>>>>>>> >------------------------------------------- >>>>>>>> > >>>>>>>> >if(jQuery.browser.msie && window.XDomainRequest) { >>>>>>>> > >>>>>>>> > //var >>>>>>>> data=JSON.stringify({'property_id':'50da64f65d396b1e48000001','name':'222','start_date':'2012/11/11'}); >>>>>>>> > var >>>>>>>> data='property_id=50da64f65d396b1e48000001&id=222'; >>>>>>>> > >>>>>>>> > var xdr = new XDomainRequest(); >>>>>>>> > xdr.contentType= 'text/plain'; >>>>>>>> > >>>>>>>> > xdr.onload = function (e) { >>>>>>>> > var data = $.parseJSON(xdr.responseText); >>>>>>>> > if (data == null || typeof (data) == 'undefined') { >>>>>>>> > alert(data) >>>>>>>> > } >>>>>>>> > //success >>>>>>>> > }; >>>>>>>> > xdr.onerror = function (e) { >>>>>>>> > //alert(e); >>>>>>>> > } >>>>>>>> > >>>>>>>> > xdr.open("POST", url); >>>>>>>> > xdr.send(data); >>>>>>>> > >>>>>>>> > } >>>>>>>> > else >>>>>>>> > { >>>>>>>> > >>>>>>>> $.post(url,{'property_id':'111','name':'222','start_date':'2012/11/11'}, >>>>>>>> >>>>>>>> function(data) { >>>>>>>> > alert(data) >>>>>>>> > }); >>>>>>>> > } >>>>>>>> > >>>>>>>> > >>>>>>>> >--------------------------------------------------- >>>>>>>> > >>>>>>>> > >>>>>>>> >$.ajax({ >>>>>>>> > beforeSend: function(xhrObj){ >>>>>>>> > >>>>>>>> xhrObj.setRequestHeader("Content-Type","application/json"); >>>>>>>> > >>>>>>>> xhrObj.setRequestHeader("Accept","application/json"); >>>>>>>> > } >>>>>>>> > url: url, >>>>>>>> > type: "POST", >>>>>>>> > data: JSON.stringify({'property_id' : 'test'}), >>>>>>>> > headers : { >>>>>>>> > 'Accept' : 'application/json', >>>>>>>> > 'Content-Type' : >>>>>>>> 'application/x-www-form-urlencoded' >>>>>>>> > }, >>>>>>>> > dataType: "json", >>>>>>>> > success: function(data){ >>>>>>>> > alert(data); >>>>>>>> > } >>>>>>>> >}); >>>>>>>> > >>>>>>>> >-- >>>>>>>> >Job Board: http://jobs.nodejs.org/ >>>>>>>> >Posting guidelines: >>>>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>>>> >You received this message because you are subscribed to the Google >>>>>>>> >Groups "nodejs" group. >>>>>>>> >To post to this group, send email to [email protected] >>>>>>>> >To unsubscribe from this group, send email to >>>>>>>> >[email protected] >>>>>>>> >For more options, visit this group at >>>>>>>> >http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>>>> >>>>>>>> -- >>>>>>>> Job Board: http://jobs.nodejs.org/ >>>>>>>> Posting guidelines: >>>>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "nodejs" group. >>>>>>>> To post to this group, send email to [email protected] >>>>>>>> To unsubscribe from this group, send email to >>>>>>>> [email protected] >>>>>>>> For more options, visit this group at >>>>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>>>> >>>>>>> >>>>>>> -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
