AJAX https POST requests using jquery fail in Firefox

匆匆过客 提交于 2019-12-04 15:23:37

问题


I have a simple list of records in an HTML table with a delete link for each row. The delete link shoots off an AJAX post request to a fixed url that looks like: "/delete/record/5"

The AJAX request is created using jquery's .ajax() call with a POST message when running on a server that uses https. This call fails in Firefox 3 on OSX/Windows architectures. It works on all other browsers I've tested (OSX/Windows: Chrome, Safari, IE7.)

The requests are coming from an https site and going to the same https site. But I think somewhere during the process the original request starts off as http and there is a redirect attempt on our server to send it from http->https and Firefox rejects that redirect as some type of forgery.

Has anyone had experience doing .ajax() JQuery calls on an https site with Firefox? I notice something odd where if the request has "?var=xxx" arguments in the URL, the request seems to work more often then if it does not have those variables.


回答1:


Sounds like you're getting an HTTP 411 error.. This error can happen if you're sending a POST request without any data.

To fix this, add an empty object ({}) to the data property to your requests:

$.ajax({ 
    url: url, 
    type: 'POST', 
    data: {}, // <- set empty data 
    success: function(data, textStatus) { 
        // do something 
    } 
}); 



回答2:


That seems unlikely... not that I'm doubting you. But I would suggest downloading Wireshark and watching your HTTP traffic to see if you can't isolate the problem. You'll be able to compare the request sent by other browsers against the request sent out by FF3 and see what sort of response is coming back. If it is indeed a problem with jQuery not functioning correctly in FF3 you might be able to alter some of the code to work properly.




回答3:


You can probably install the Firefox Live Headers extension that will give you access to all the information in your requests/responses. This way you'll be catch any differences.




回答4:


Do you have any plugins or GreaseMonkey scripts installed on your Firefox?

I have never had issues with jQuery AJAX requests on HTTPS. I'd suggest taking a look at what Firebug turns up if you haven't already.




回答5:


I got $.post to work in Firefox by sending an empty object as the data parameter. Notice the empty brackets for parameter 2:

$.post(url, {}, function(response){ alert('done'); }, "json");


来源:https://stackoverflow.com/questions/597073/ajax-https-post-requests-using-jquery-fail-in-firefox

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!