访问PrestaShop Webservice API时返回401未授权错误如何解决?
Prestashop 1.7 Webservice 401未授权错误排查方案
1. 修复Authorization头透传问题
AWS Lightsail默认的Prestashop运行环境多为Apache + PHP-FPM,Authorization头默认会被Web服务丢弃,是该问题最高发的原因:
- 编辑站点根目录下的
.htaccess文件,在RewriteEngine On规则下方新增配置:RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] - 若使用Nginx环境,在站点配置的PHP处理location段添加:
fastcgi_pass_header Authorization; fastcgi_param HTTP_AUTHORIZATION $http_authorization; - 保存配置后重启Web服务,重试请求。
2. 校准Webservice权限配置
- 登录Prestashop后台,进入「高级参数」→「Webservice」页面,确认「启用 PrestaShop 的 webservice」开关为开启状态
- 找到当前使用的密钥,确认除了激活状态外,已经勾选了对应接口的访问权限(查看/编辑/删除等,按需配置)
- 若使用FastCGI部署,直接开启页面中的「是否启用 CGI 模式」选项。
3. 验证请求格式正确性
- 浏览器访问API时,身份验证弹窗需要将密钥作为用户名填写,密码栏留空,不要将密钥填入密码输入框
- Python请求格式参考:
import requests API_KEY = "后台生成的完整密钥" API_URL = "https://你的域名/api/" resp = requests.get(API_URL, auth=(API_KEY, "")) print(resp.status_code, resp.text) - 密钥大小写敏感,不要前后添加多余空格、特殊字符。
4. 排查网络拦截规则
- 确认Lightsail实例防火墙、站点安全模块没有拦截
/api/*路径的请求 - 若站点开启了HTTPS,直接用HTTPS协议访问API,避免HTTP跳转HTTPS时丢失请求头
- 若使用了CDN、WAF服务,确认相关配置没有拦截Authorization请求头。
内容的提问来源于stack exchange,提问作者Moses
相关产品推荐
相关产品推荐

