向Unirest API添加哪些请求头可被服务器接收?及Spring Boot SSL API配置问询
适配你的Spring Boot API,Unirest需添加的请求头指南
从你贴出的Spring Security配置片段来看,你的API采用了自定义认证逻辑(通过getProvider()实现的自定义AuthenticationProvider),同时配置了表单登录流程和401认证入口,咱们分场景来说明Unirest需要的请求头:
1. 登录请求(访问/logins/login)
因为你配置了formLogin(),这个接口默认接收表单格式的请求,所以Unirest需要添加以下请求头:
- Content-Type: 必须设置为
application/x-www-form-urlencoded,告诉服务器你发送的是表单数据 - 同时记得在请求体里带上你的登录参数(比如
username和password,具体字段名取决于你自定义认证逻辑里的参数要求)
示例Unirest代码:
HttpResponse<String> loginResponse = Unirest.post("https://your-api-domain/logins/login") .header("Content-Type", "application/x-www-form-urlencoded") .field("username", "your-account") .field("password", "your-pass") .asString();
2. 登录后访问受保护接口
登录成功后,你需要根据认证方式携带对应的认证信息头,分两种常见情况:
场景A:Session认证
如果你的认证是基于Session的(登录后服务器返回Session Cookie),Unirest可以自动管理Cookie,只需要开启Cookie支持:
// 初始化Unirest时配置Cookie管理器 Unirest.config().cookieSpec(CookieSpecs.DEFAULT);
这样后续请求会自动携带登录获取的Session Cookie,无需手动添加头。
场景B:Token类认证(比如JWT/API Key)
如果你的自定义AuthenticationProvider是验证请求头中的Token,通常需要添加:
- Authorization: 如果是Bearer Token格式,值为
Bearer <你的登录获取的Token>;如果是自定义API Key头,比如X-API-KEY: <你的密钥>(具体取决于你getProvider()里的认证逻辑)
示例代码:
HttpResponse<String> protectedApiResponse = Unirest.get("https://your-api-domain/api/protected-data") .header("Authorization", "Bearer your-access-token") .asString();
3. 其他可能需要的额外头
从你配置的Http401AuthenticationEntryPoint("App header")来看,这是服务器返回的响应头(认证失败时的WWW-Authenticate信息),你不需要主动发送,但如果你的API有自定义的应用标识要求,可能需要添加类似X-App-Identifier: your-app-id这类头,具体要看你认证逻辑里是否有校验。
额外注意事项
- 如果你后续启用了CSRF保护(代码里现在注释了
.csrf().disable()),那么除GET外的请求需要携带X-XSRF-TOKEN头,值从服务器返回的XSRF-TOKENCookie中获取。 - 因为你的API是SSL加密的,如果是自签名证书,Unirest需要配置信任该证书(生产环境不建议忽略验证):
Unirest.config().verifySsl(false);
内容的提问来源于stack exchange,提问作者Mohammed Housseyn Taleb
相关产品推荐
相关产品推荐

