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

SAXO OpenAPI认证:Python GET请求与CURL输出不符问题排查

问题根源:两段请求的核心差异点

1. 参数传递位置完全不同

  • curl请求:所有认证参数(response_type、client_id、state、redirect_uri)都放在URL的查询字符串(?之后的部分)中,这是GET请求传递参数的标准方式,SAXO的认证端点会从这里读取参数。
  • Python代码:使用data=data传递参数,但requests库中,GET请求的data参数会把数据放到**请求体(body)**里,而非URL查询字符串。SAXO的认证端点不支持从请求体读取GET请求的参数,因此无法识别你传递的参数,返回400错误。

2. 不必要的请求头干扰

  • curl里的Content-Type: application/x-www-form-urlencoded头是多余的——GET请求没有请求体,这个头实际不起作用。
  • Python代码中同样添加了这个头,但GET请求带请求体不符合HTTP规范,服务器可能会因为头信息和实际请求内容不匹配而拒绝请求。

修正后的Python代码

要和curl请求逻辑完全一致,需要用params参数传递(requests会自动把字典转为URL查询字符串),同时移除不必要的请求头:

import requests

def authenticate(config: dict = None):
    if config is None:
        return False

    endpoint = config['AuthorizationEndpoint']
    params = {'response_type': 'code',
              'client_id': config['client_id'],
              'state': 'y90dsygas98dygoidsahf8sa',
              'redirect_uri': config['url']}
    response = requests.get(url=endpoint, params=params)
    print(response)

config = {'AuthorizationEndpoint': 'https://sim.logonvalidation.net/authorize',
          'client_id': '37656c896c424f8cab64774e603bc927',
          'url': 'http://localhost/myAppTest'}

authenticate(config)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:25:30