Hostinger付费主机CORS问题求助:调用外部API遭拦截
Hostinger付费虚拟主机CORS拦截问题
我在Hostinger使用付费虚拟主机,调用外部API时被CORS拦截,但本地localhost通过proxy.config代理配置、Postman Web均可正常访问该API端点。
当前.htaccess配置如下:
<IfModule mod_headers.c> Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, PATCH, OPTIONS" Header always set Access-Control-Max-Age "1000" Header always set Access-Control-Allow-Headers "Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, x-api-key, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization" Header always set Access-Control-Expose-Headers "*" </IfModule>
请求详情:
- OPTIONS预检请求:浏览器发起的预检请求未获得符合要求的CORS响应头
- POST请求:实际请求因Origin不被允许而被拦截
解决方案
1. 完善.htaccess的OPTIONS请求处理
Hostinger的Apache服务器可能未正确响应OPTIONS预检请求,需添加专门的规则处理:
# 先处理OPTIONS请求返回200状态 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] </IfModule> <IfModule mod_headers.c> Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, PATCH, OPTIONS" Header always set Access-Control-Max-Age "1000" Header always set Access-Control-Allow-Headers "Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, x-api-key, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization" Header always set Access-Control-Expose-Headers "*" # 若请求需携带凭证(如Cookie),添加以下行 # Header always set Access-Control-Allow-Credentials "true" </IfModule>
2. 验证Apache模块是否启用
登录Hostinger控制面板,进入高级 > Apache Modules,确认mod_headers和mod_rewrite已勾选启用,若未启用则勾选后保存配置。
3. 调整Origin配置(若需凭证)
如果你的API请求需要携带Cookie或HTTP认证信息,Access-Control-Allow-Origin不能使用通配符*,需指定你的主机域名:
Header always set Access-Control-Allow-Origin "https://your-hostinger-domain.com" Header always set Access-Control-Allow-Credentials "true"
4. 检查外部API的来源限制
确认目标外部API是否设置了来源白名单,若有需将Hostinger主机的域名添加到API的允许列表中。
内容的提问来源于stack exchange,提问作者Agustin Bernheim
相关产品推荐
相关产品推荐

