如何在Python 3的CGI脚本中解析URL中的GET参数
解决方案
你当前逻辑的问题在于,os.environ['QUERY_STRING']返回的本身就是URL中?之后的完整查询串,不需要再通过urlparse解析完整URL提取query字段,直接将查询串传入parse_qs即可正常解析参数。
修正后的代码如下:
#!/usr/bin/python3 import os from urllib.parse import parse_qs try: # 直接读取查询字符串,无查询参数时默认返回空字符串避免报错 query_str = os.environ.get('QUERY_STRING', '') # 直接解析查询串得到参数字典 query_params = parse_qs(query_str) # 取rurl参数的第一个值 redirect_url = query_params['rurl'][0] # 后续业务逻辑 print(redirect_url) except KeyError: # 没有rurl参数的处理逻辑 print("缺少必填参数rurl") except Exception as e: # 其他异常处理 print(f"参数解析失败:{str(e)}")
更推荐的实现方案
你也可以直接使用Python标准库自带的cgi模块处理CGI请求参数,代码更简洁且兼容GET/POST两种请求方式:
#!/usr/bin/python3 import cgi # 解析请求参数 form = cgi.FieldStorage() # 直接获取rurl参数,不存在时返回默认空字符串 redirect_url = form.getfirst('rurl', '') if redirect_url: print(redirect_url) else: print("缺少必填参数rurl")
内容的提问来源于stack exchange,提问作者merlin
相关产品推荐
相关产品推荐

