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

部署于Azure Ubuntu的Spring Boot GET接口无法通过Ajax调用问题问询

问题根因汇总

  1. Ajax请求地址指向错误:你写的http://localhost:9002是客户端地址,Ajax代码运行在访问PHP页面的用户本地浏览器中,会指向用户自己的设备端口,而非Azure服务器的端口,自然连接失败。
  2. Spring Boot监听配置限制:application.properties中配置的server.address=localhost,会让Spring Boot仅监听服务器本地回环接口,就算请求指向服务器公网IP,也无法连接到服务。
  3. CORS配置存在逻辑错误:
    • 两次对/**路径添加CORS映射,后配置的规则会覆盖前一条,仅http://52.XXX.XXX.XXX的跨域请求会被放行
    • Spring Security的访问规则中hasIpAddress("::9002")属于无效配置,该方法用于校验客户端IP而非端口,不产生任何作用
  4. 该问题和PHP的.htaccess配置完全无关,不需要修改对应文件。

修复步骤

  1. 调整Spring Boot监听配置
    修改application.properties,删除server.address=localhost,或者改为server.address=0.0.0.0,让服务监听服务器所有网卡接口,可接收公网请求。

  2. 修正CORS配置
    合并重复的CORS规则,删除无效的IP校验逻辑,测试阶段可先放开权限验证,确认通了再补充权限规则:

@Override
public void addCorsMappings(CorsRegistry registry) {
    LOG.info("Adding CORS Mapping");
    // 把所有允许的源放在同一个配置里,避免覆盖
    registry.addMapping("/**")
        .allowedOrigins("http://localhost", "http://52.XXX.XXX.XXX") // 后续如果用域名访问也要把域名加进来
        .allowedMethods("PUT", "DELETE", "POST", "GET")
        .allowCredentials(false).maxAge(3600);
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    LOG.info("Configuring Security");
    http.cors().and().csrf().disable()
        .authorizeRequests().antMatchers("/**")
        // 先放开权限验证,确认连通后再按需添加IP限制规则
        .permitAll();
}
  1. 修改前端Ajax请求地址
    将url替换为你的Azure服务器公网IP或对应域名,示例:
url: 'http://52.XXX.XXX.XXX:9002/universidades_por_prioridad'

同时确认Azure控制台的网络安全组已开放9002端口的入站规则,允许你需要的访问源IP连接。


额外说明

你在服务器本地执行curl命令可以正常访问,是因为curl运行在服务器本地,请求的是服务器自身的回环接口,刚好匹配你原配置的监听地址,和浏览器端Ajax的运行场景完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 07:48:02