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

Windows WSL2环境下Clojure Pedestal服务curl可访问但浏览器无法加载

问题排查与解决方案
  • 检查服务绑定地址
    Pedestal服务默认未显式配置host时,仅会绑定127.0.0.1,仅允许WSL2内部环回访问,Windows宿主的浏览器请求无法接入WSL2内部的环回地址。你可以在WSL2终端执行ss -tulpn | grep 8080验证监听地址,若返回结果为127.0.0.1:8080即属于该问题。
    解决方法:修改Pedestal启动配置,显式指定host为0.0.0.0:
    (http/start {::http/routes routes
                 ::http/port 8080
                 ::http/host "0.0.0.0" ;; 新增该配置项
                 ::http/type :jetty
                 ::http/join? false})
    
    若使用Docker部署,启动时需将端口映射规则修改为-p 0.0.0.0:8080:8080,不要仅绑定127.0.0.1
  • 排查跨域(CORS)规则限制
    curl不会校验跨域规则,因此可正常拿到响应结果,但浏览器会校验不同端口/域名的跨域请求。你的ShadowCLJS前端默认端口与Pedestal的8080端口不一致,会触发跨域拦截。
    解决方法:在Pedestal拦截器链中添加CORS拦截器,放行前端地址的请求:
    (def cors-interceptor
      (cors/allow-origin {:allowed-origins #{"http://localhost:9630" "http://localhost:8700"}
                          :allowed-methods [:get :post :put :delete :options]}))
    
  • 验证WSL2端口映射规则
    若修改绑定地址后仍无法访问,可在Windows管理员CMD中执行netsh interface portproxy show all,查看是否存在8080端口到WSL2内部IP的映射。若不存在可手动添加:
    1. WSL2终端执行ip addr show eth0获取WSL2内部IP,格式为172.xx.xx.xx
    2. Windows管理员CMD执行netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=替换为上述WSL2内部IP
  • 检查Windows防火墙拦截
    临时关闭Windows Defender防火墙测试访问是否正常,若关闭后可访问,添加入站规则放行8080端口即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:09:02