You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel与Vue分部署后请求报错求助:net::ERR_HTTP2_PROTOCOL_ERROR

解决方案:部署后Vue无法访问000webhost上的Laravel接口(ERR_HTTP2_PROTOCOL_ERROR)

1. 跨域(CORS)配置缺失

本地环境无跨域问题,但Netlify域名与000webhost Laravel域名属于不同源,必须配置CORS规则:

  • 安装Laravel CORS扩展:composer require barryvdh/laravel-cors
  • 修改config/cors.php:
    • 将paths设为['api/*'](覆盖所有API路由)
    • allowed_origins指定Netlify站点域名(如['https://your-netlify-site.netlify.app']),测试阶段可临时设为['*']
    • 确保allowed_methods包含GET, POST, PUT, DELETE等你用到的请求方法
  • 在app/Http/Kernel.php的api中间件组中添加\Barryvdh\Cors\HandleCors::class
  • 清理配置缓存:php artisan config:cache,共享主机环境可手动删除bootstrap/cache目录下的缓存文件

2. 000webhost的HTTP2/SSL兼容性问题

ERR_HTTP2_PROTOCOL_ERROR多数与HTTPS配置相关:

  • 确认000webhost站点已启用免费SSL证书(控制面板中找到SSL选项完成启用)
  • Vue项目中所有接口地址必须使用https://前缀,禁止混用http(避免混合内容错误)
  • 若HTTP2协议存在兼容性bug,可在public/.htaccess中强制使用HTTP1.1:
    <IfModule mod_http2.c>
      Protocols http/1.1
    </IfModule>
    

3. 路由重写配置失效

Laravel依赖URL重写解析API路由,需检查:

  • 确保public/.htaccess文件内容正确(默认Laravel重写规则如下):
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
  • 联系000webhost客服确认mod_rewrite模块已开启,或在控制面板中手动启用URL重写功能

4. 接口地址配置错误

  • 检查Vue项目的生产环境变量(如.env.production),确保API base URL指向000webhost的正确地址,例如:
    VUE_APP_API_URL=https://your-000webhost-domain.com/api
    
  • 代码中使用环境变量拼接接口地址,避免硬编码本地地址

5. 000webhost安全规则拦截

  • 检查控制面板中的防火墙/ModSecurity设置,临时关闭ModSecurity测试是否能正常请求
  • 查看Laravel的storage/logs/laravel.log,若日志中无请求记录,说明请求被主机安全规则拦截,需联系客服调整规则

内容的提问来源于stack exchange,提问作者Abdallah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 14:27:13