簡體   English   中英

使用HTTPS時,jQuery.ajax不會發送正確的ajax標頭

[英]jQuery.ajax doesn't send proper ajax headers when using HTTPS

每當我創建一個jQuery.ajax請求時,它都可以在URL使用HTTP協議時正常工作。 但是當我向HTTPs服務器發送相同的請求時,它會在沒有頭[ HTTP_X_REQUESTED_WITH: XMLHttpRequest ]的情況下發送。 因此服務器無法知道這是一個AJAX請求!

我試過了:

  • 切換$ .ajax,$。post,$ .get
  • 使用beforeSend強制標題
  • 設置CrossDomain:true

注意:沒有跨域問題,請求有效並處理,但不是AJAX。

當前URL為http但請求的URL位於同一域但使用HTTPS時,會發生此問題。 http://example.com/home將使用AJAX POST發布到

我嘗試了Kishor的方法,但標題沒有被發送。 我修改了它,設置標題如下:

$.ajax {
  beforeSend: function(jqXHR, settings) {
    jqXHR.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  },
  ...
};

我正在使用jQuery 1.8.2。

我在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");      
$.ajax {
    ...
    ...
    beforeSend : function(jqXHR, settings) {
                   jqXHR.setRequestHeader("HTTP_X_REQUESTED_WITH", "XmlHttpRequest"
                 }

    ...
    ...
}

希望這個有所幫助:D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM