如何提升URL长度?OSRM匹配500个位置遇URI过长错误
解决OSRM请求URL过长的问题
调整Apache服务器的URL长度限制
如果坚持使用GET请求,需要修改Apache配置放宽URL长度限制:
- 编辑Apache主配置文件
/etc/apache2/apache2.conf或对应站点的配置文件(如/etc/apache2/sites-available/your-site.conf) - 添加或更新以下配置项:
默认LimitRequestLine 65536 LimitRequestFieldSize 65536LimitRequestLine为8190字节,设置为65536字节(64KB)足以容纳包含500个位置的URL - 保存配置后重启Apache服务:
sudo systemctl restart apache2
改用POST请求(更推荐方案)
URL长度限制不仅存在于Apache,浏览器、CDN等中间层也可能有各自限制,因此更稳妥的方式是用POST请求传递位置数据:
- OSRM的核心服务(match、route等)均支持POST请求,将坐标数据放在请求体中而非URL里
- 以match服务为例,示例请求如下:
这种方式完全不受URL长度限制,可轻松处理500个甚至更多位置数据curl -X POST http://127.0.1.1/match/v1/driving/ \ -H "Content-Type: application/json" \ -d '{ "coordinates": [[116.397, 39.908], [116.407, 39.907], ...], "steps": true }'
额外配置注意
- 若Apache作为OSRM的反向代理,需设置足够的请求体大小限制,可添加
LimitRequestBody 1048576(1MB,可按需调整)到Apache配置中 - 修改配置后先测试少量坐标的请求是否正常,再逐步验证500个位置的请求情况
内容的提问来源于stack exchange,提问作者bachgri
相关产品推荐
相关产品推荐

