如何在Jitterbit中捕获重定向URL的Response header(Location)
如何在Jitterbit HTTP v2连接器中捕获Bullhorn OAuth重定向的Location响应头
问题背景
调用Bullhorn REST API的OAuth端点获取授权码时,服务端会触发重定向,授权码包含在重定向URL的Location响应头中。在Postman中禁用「Automatically follow redirects」后,可直接从响应头提取该字段,但在Jitterbit HTTP v2连接器中:
- Bullhorn不支持客户端凭证/密码授权类型,无法使用Jitterbit内置OAuth功能
- 设置连接为「No Auth」并传入正确查询参数后,通过
$jitterbit.target.http.response.header.Location或$jitterbit.source.http.response.header.Location无法读取到重定向的Location头,仅能获取原请求端点的响应头
解决方案
1. 禁用HTTP v2操作的自动重定向
Jitterbit HTTP v2默认自动跟随重定向,导致无法捕获中间的重定向响应头。需要在HTTP v2 GET操作的Advanced设置中,将「Follow Redirects」改为No,和Postman的操作逻辑保持一致。
2. 在操作后脚本中读取响应头
禁用重定向后,Jitterbit会返回3xx状态码的重定向响应,此时需在操作后的脚本(而非转换脚本)中读取响应头,示例代码如下:
// 获取重定向的Location头 var locationHeader = $jitterbit.target.http.response.header.Location; $jitterbit.log.info("重定向URL: " + locationHeader); // 从URL中提取授权码(假设参数名为code) var authCodeMatch = locationHeader.match(/code=([^&]+)/); if(authCodeMatch != null){ var authCode = authCodeMatch[1]; $jitterbit.log.info("提取到授权码: " + authCode); // 将授权码存入全局变量供后续流程使用 $jitterbit.vars.Set("bullhorn_auth_code", authCode); }
3. 验证响应状态码
在脚本中添加状态码打印,确认请求返回的是3xx重定向状态(如302),避免因设置错误导致请求直接返回200:
$jitterbit.log.info("响应状态码: " + $jitterbit.target.http.response.status);
4. 核对请求参数与连接设置
- 确认HTTP v2连接的「Authentication」设置为No Auth
- 确保GET请求的查询参数与Postman完全一致,包括
client_id、response_type=code、redirect_uri、scope等必填项
内容的提问来源于stack exchange,提问作者Vikas J
相关产品推荐
相关产品推荐

