每当我创建jQuery.ajax
请求时,当URL使用HTTP协议时,它都可以正常工作。但是当我向HTTPs服务器发送相同的请求时,它会在没有标题[HTTP_X_REQUESTED_WITH: XMLHttpRequest
]的情况下发送。因此,服务器无法知道这是一个AJAX请求!
我试过了:
beforeSend
CrossDomain:true
注意:没有跨域问题,请求有效并处理,但不是AJAX。
当前网址为http但请求的网址位于同一网域但使用HTTPS时,会出现此问题。 http://example.com/home 将使用AJAX POST发布到
答案 0 :(得分:5)
我尝试了Kishor的方法,但标题没有被发送。我修改了它,设置标题如下:
$.ajax {
beforeSend: function(jqXHR, settings) {
jqXHR.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
},
...
};
我正在使用jQuery 1.8.2。
答案 1 :(得分:3)
我在http和https之间做同样的事情也有同样的问题 我研究了这个,它是跨域问题。请尝试使用带有回调函数的JSONP来执行这些操作,而用于执行curl的服务器端页面最重要的是必须设置一些标头以允许http到https连接。这些如下:
header("Access-Control-Allow-Origin: your https url");
header("Access-Control-Allow-Methods: POST, GET");
header("Access-Control-Max-Age: 1728000");
header("Access-Control-Allow-Headers: Content-Type, Connection, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control");
header("Connection: close");
答案 2 :(得分:1)
$.ajax {
...
...
beforeSend : function(jqXHR, settings) {
jqXHR.setRequestHeader("HTTP_X_REQUESTED_WITH", "XmlHttpRequest"
}
...
...
}
希望这个有所帮助:D