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

Python向ASP页面发送GET请求获取报告返回过期提示,Postman正常是何原因

报告下载请求返回过期的排查方案

你可以按以下优先级逐项排查遗漏的配置:

  • 请求头校验遗漏:ASP站点通常会校验请求的Referer、Origin、User-Agent头,你需要和浏览器/Postman的请求头完全对齐,特别是Referer需要设置为你上一步「选择报告」页面的完整URL,站点会通过该字段判断你是否是从合法流程跳转来的,直接空Referer访问会被判定为非法请求。你可以在session中全局设置头,或者给每个get请求加headers参数:
# 示例:给请求加正确的Referer头
headers = {
    "Referer": "https://website.com.au/Reports/SelectReport.asp", # 替换为你实际选报告的页面地址
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
}
rw = session.get('https://website.com.au/Reports/ReportWindow.asp?' + report_urlencoded, headers=headers, allow_redirects=True)
  • 临时会话参数遗漏:你需要确认「选择报告」的请求是否和后面的下载请求在同一个session实例中,站点会在你选完报告后种下带报告ID的临时Cookie,如果你两个步骤用了不同的session、或者没执行选报告的请求直接调用下载接口,后台就会判定报告不存在返回过期。你可以打印session.cookies对比Postman中的Cookie,确认所有临时Cookie都已正确携带。
  • 请求参数错误:你当前generatereport.asp的时间戳是自己生成的,大概率不符合要求:通常这类接口的时间戳/一次性token是放在ReportWindow.asp的响应内容里的,你需要从rw.text中提取正确的参数,而不是自己生成当前时间。你可以先打印rw.text查看页面中是否有隐藏的token、reportId或者正确的generatereport调用地址。
  • 请求时序问题:浏览器触发下载前会有窗口加载的间隔,你代码中两个请求间隔太短的话,后台还未完成报告的预生成,就会返回过期提示,可以在两个请求之间加2-3秒的等待:
import time
if rw.status_code == 200:
    time.sleep(3) # 增加等待间隔,等待后台生成报告
    # 从rw.text提取正确的generatereport参数后再调用
    gr = session.get('https://website.com.au/reports/generatereport.asp?_=' + 你提取的正确参数, headers=headers)
  • 重定向配置问题:Postman默认开启自动跟随重定向,你需要给Python的get请求显式加上allow_redirects=True参数,同时可以打印rw.status_code确认是否是302类跳转被你误判为200处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:00