【问题标题】:jQuery.ajax doesn't send proper ajax headers when using HTTPS使用 HTTPS 时,jQuery.ajax 不发送正确的 ajax 标头
【发布时间】:2012-03-30 23:39:13
【问题描述】:

每当我创建 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 发布到

【问题讨论】:

  • 一个跨域问题 AFAIK。 SOP 要求请求使用相同的协议和端口(当您使用 HTTP -> HTTPS 和 80 -> 443 时)。看起来(没有更多信息)jQuery 正在在幕后发出 JSONP 请求,它忽略了额外的 HTTP 标头。
  • 您的意思是当您在 HTTP 服务器上并向 HTTPS 服务器发出 ajax 请求时,对吧?
  • 您确定要寻找正确的标题吗?你在哪个jquery版本上?每次我不得不这样做时,jquery 都会设置 x-requested-with 标头,而不是 HTTP_X_REQUESTED_WITH 标头。
  • 两者都没有设置!我在 jQuery v1.7.1
  • @mjalajel 不,在这种情况下,它不会回退到jsonp,但是它将使用<script> 标签作为GET 请求发送。使用<script>标签发出请求时,无法设置headers。

标签: javascript jquery ajax https


【解决方案1】:

我尝试了 Kishor 的方法,但没有发送标头。我对其进行了修改,将标题设置为:

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

我正在使用 jQuery 1.8.2。

【讨论】:

    【解决方案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");      
    

    【讨论】:

    • 请注意您的格式,不要将您的整个帖子格式化为代码块..
    【解决方案3】:
    $.ajax {
        ...
        ...
        beforeSend : function(jqXHR, settings) {
                       jqXHR.setRequestHeader("HTTP_X_REQUESTED_WITH", "XmlHttpRequest"
                     }
    
        ...
        ...
    }
    

    希望这个对你有帮助:D

    【讨论】:

      猜你喜欢
      • 2017-12-20
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多