You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加X-Requested-With:XMLHttpRequest头的Jsoup请求无效

问题分析与解决方案

可能原因1:Jsoup自动跟随重定向时丢失请求头

Jsoup默认会自动处理302重定向,但在重定向跳转的后续请求中,不会自动携带你设置的X-Requested-With头。目标网站可能在重定向后的页面校验这个头,导致返回的不是预期的AJAX内容。

解决方法:
禁用自动重定向,手动处理跳转并携带所有必要头:

// 发送初始请求,不跟随重定向
Connection.Response initialResponse = Jsoup.connect(url)
        .cookies(loginCookies)
        .header("X-Requested-With", "XMLHttpRequest")
        .followRedirects(false)
        .execute();

// 获取重定向目标URL
String redirectUrl = initialResponse.header("Location");

// 携带相同头和Cookie请求重定向后的地址
Document page = Jsoup.connect(redirectUrl)
        .cookies(loginCookies)
        .header("X-Requested-With", "XMLHttpRequest")
        .get();

可能原因2:Cookie传递不完整或格式问题

检查loginCookies是否完全包含Postman中发送的所有Cookie,比如是否漏掉csrf-token、sessionId这类关键标识。部分网站会校验Cookie完整性,缺失会触发重定向。

解决方法:

  • 对比Postman的Cookie列表,确保loginCookies的键值对完全一致,注意键名大小写(部分网站区分Cookie键名大小写)。
  • 用initialResponse.cookies()查看Jsoup接收的Cookie,和Postman的内容做差异对比。

可能原因3:缺少必要请求头(如User-Agent)

Postman默认会发送User-Agent头,而Jsoup的默认User-Agent是jsoup/{version},部分网站会通过该头识别非浏览器请求,触发重定向或返回异常内容。

解决方法:
添加和Postman一致的User-Agent头:

Document page = Jsoup.connect(url)
        .cookies(loginCookies)
        .header("X-Requested-With", "XMLHttpRequest")
        .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36") // 替换为Postman的User-Agent
        .get();

可能原因4:请求参数或Referer头缺失

有些AJAX请求看似是GET,实际需要携带隐藏Query参数(如csrf参数),或者网站会校验请求的Referer头是否来自合法页面。

解决方法:

  • 检查Postman请求的所有Query参数,确保Jsoup请求完全一致。
  • 添加Referer头,指向触发该AJAX请求的原页面URL:
.header("Referer", "https://目标网站的原页面完整URL")

内容的提问来源于stack exchange,提问作者user1821431

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:17:02