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

Javascript在Chrome及本地Firefox正常,部署后Firefox失效问题排查

Spark Java短链应用Firefox部署异常问题(已解决)

问题场景

这是基于Spark Java开发的短链接服务,前端通过JS处理表单提交,后端/api/new接口负责验证短链合法性:合法则存入数据库,非法则返回400错误。本地Docker构建运行时一切正常,但通过Nginx反向代理部署到公网后,Firefox浏览器中提交非法输入时错误提示功能失效,Chrome浏览器则完全正常。

前端JS代码

const addErrBox = async () => {
    const controls = document.querySelector(".pure-controls");
    const errBox = document.createElement("p");
    errBox.setAttribute("id", "errBox");
    errBox.setAttribute("style", "color:red");
    errBox.innerHTML = "Short URL not valid or already in use!";
    controls.appendChild(errBox);
}

const submitForm = () => {
    const form = document.forms.namedItem("new-url-form");
    const longUrl = form.elements["longUrl"];
    const shortUrl = form.elements["shortUrl"];

    const url = `/api/new`;

    fetch(url, {
        method: "POST",
        body: `${longUrl.value};${shortUrl.value}`
    })
        .then((res) => {
            if (!res.ok) {
                if (document.getElementById("errBox") == null) {
                    addErrBox();
                }
            }
            else {
                document.getElementById("errBox")?.remove();
                longUrl.value = "";
                shortUrl.value = "";

                refreshData();
            }
        });

};

(async () => {
    await refreshData();
    const form = document.forms.namedItem("new-url-form");
    form.onsubmit = e => {
        e.preventDefault();
        submitForm();
    }
})();

后端Java接口代码

public static String addUrl(Request req, Response res) {
        var body = req.body();
        if (body.endsWith(";")) {
            body = body + "$";
        }
        var split = body.split(";");

        String longUrl = split[0];
        
        if (split[1].equals("$")) {
            split[1] = Utils.randomString();
        }
        String shortUrl = split[1];
        shortUrl = shortUrl.toLowerCase();
        
        var shortUrlPresent = urlRepository
                .findForShortUrl(shortUrl);

        if (shortUrlPresent.isEmpty() && Utils.validate(shortUrl)) {
            return urlRepository.addUrl(longUrl, shortUrl);
        } else {
            res.status(HttpStatus.BAD_REQUEST_400);
            return "shortUrl not valid or already in use";
        }
    }

关键现象

  • 输入合法时,前后端功能均正常,能成功存储短链并刷新页面。
  • 后端接口在非法输入时能正确返回400状态码及错误信息。
  • 仅在公网Nginx反向代理环境下的Firefox中,前端未触发错误提示框的显示逻辑;本地Docker环境下所有浏览器均正常。

更新说明

未对服务器端代码做任何修改,功能突然自行恢复正常。推测异常原因是Firefox浏览器缓存、Cloudflare缓存或Nginx缓存导致的请求/响应处理异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:15:21