GET请求收到方法名含无效字符报错,后端调用MapBox API配置问题
根因说明
- 你贴出的错误是典型的HTTP/HTTPS协议不匹配异常:报错信息里的
0x16是TLS握手请求的首字节标识,说明服务端收到了HTTPS格式的请求,但当前监听端口仅支持HTTP协议,解析时把TLS报文内容识别为了非法的HTTP方法名。 - 你当前提供的代码仅完成了MapBox请求URL的拼接返回,没有包含后端主动调用MapBox API的逻辑,需要先确认报错的触发链路:是你后端调用MapBox时抛出的异常,还是前端/客户端请求你提供的
/getTarget接口时抛出的异常。 - 你拼接MapBox请求URL的逻辑存在语法错误:你使用了
${}包裹access_token变量,最终生成的URL中token参数会携带多余的${}字符,MapBox服务端会识别为非法token返回401错误。
修复方案
- 修正URL拼接逻辑,去掉
${}符号:
public String getTarget() { TargetLocation location = targetLocationRepository.findTargetLocationById(); String lat = location.getLatitude(); String lng = location.getLongitude(); // 直接拼接token值,不需要${}包裹 return "https://api.mapbox.com/geocoding/v5/mapbox.places/"+lat+","+lng+".json?access_token="+MAPBOX_ACCESS_TOKEN; }
- 协议匹配排查:
- 如果是后端调用MapBox时触发报错:检查你调用MapBox的HTTP客户端配置,确认请求的是HTTPS协议的MapBox地址,没有被强制改写为HTTP,也没有指定错误的请求端口。
- 如果是客户端请求你的
/getTarget接口时触发报错:检查客户端请求使用的协议,如果你服务端没有配置SSL证书,不要用HTTPS协议请求服务的HTTP端口;如果需要支持HTTPS,正确配置服务端的SSL证书和HTTPS监听端口。
- 如果你需要在后端直接调用MapBox API获取结果,需要引入HTTP客户端工具(如RestTemplate、OkHttp)发起请求,当前代码仅返回URL字符串不会主动调用第三方接口。
内容的提问来源于stack exchange,提问作者Tip
相关产品推荐
相关产品推荐

