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

Glassfish 7.0.12部署Java EE应用时URL末尾自动加问号的问题求助

问题:前端按钮点击触发页面重载,Referer末尾带问号导致NS_BINDING_ABORTED错误?

我正在开发首个正式Web服务器项目,此前一直使用Node.js服务器,因需接入自建MySQL数据库,本次选择纯Java后端。

  • 后端基于Java EE(Java 17)项目,部署在云端Ubuntu服务器的Glassfish 7.0.12中,通过NGINX作为HTTPS反向代理,这是我在该Linux服务器上部署的第四个同类服务。
  • 前端采用Angular 16.x构建,目前仅包含一个着陆页和两个按钮,用于调用两个后端服务(可通过浏览器地址栏或Postman直接调用)。

当前状态:

  • 应用已成功部署到Glassfish服务器,可通过HTTPS正常访问着陆页;
  • 两个后端服务通过Postman或浏览器地址栏调用完全正常;
  • 点击前端按钮时,UI会瞬间闪烁并重新加载整个着陆页,浏览器控制台显示NS_BINDING_ABORTED错误。

排查发现:
与其他项目不同,HTTP请求头中的Referer字段为https://my-domain/my-context-root/?,末尾多了一个问号,而我其他项目的着陆页均无此后缀。我猜测这个问号是问题关键,根据CORS的同源规则校验逻辑,Referer会被用于校验,多余的问号可能导致校验失败。另外看起来请求并未离开浏览器,因此我添加的后端CORS过滤器并未起到作用。

请问:这个问号来自何处?如何移除它?

相关截图

  • 错误发生后的浏览器控制台:
    错误发生后的浏览器控制台

  • index.html内容:
    index.html内容

后端CORS相关代码

CORS过滤器实现

package org.my-app_server.base;

import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerResponseContext;
import jakarta.ws.rs.container.ContainerResponseFilter;
import jakarta.ws.rs.ext.Provider;

@Provider
public class CorsResourceFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        responseContext.getHeaders().putSingle("Access-Control-Allow-Origin", "*");
        responseContext.getHeaders().putSingle("Access-Control-Allow-Credentials", "true");
        responseContext.getHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
        responseContext.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept");
    }

}

过滤器注册代码

package org.my-app_server.base;

import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;

import java.util.HashSet;
import java.util.Set;

@ApplicationPath("/api")
public class RRSSApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> resources = new HashSet<>();

        resources.add(CorsResourceFilter.class);

        return resources;
    }

}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:07:09