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

Django本地localhost访问无结果但127.0.0.1:8000可正常显示问题求助

问题根因

这是典型的浏览器同源策略拦截跨域请求导致的问题:
你在前端AJAX里把请求地址硬编码成了http://127.0.0.1:8000/api/,当你用localhost访问本地服务时,当前页面的源是http://localhost:8000,和AJAX请求的目标源http://127.0.0.1:8000属于不同源,请求会被浏览器直接拦截,无法拿到后端返回结果,自然功能异常。
当你直接用http://127.0.0.1:8000/访问页面时,页面源和请求源完全一致,符合同源要求,请求不会被拦截,所以功能正常。

修复方案
  • 把AJAX中硬编码的绝对URL改成相对路径,不要写死IP和端口,直接填/api/即可。改完之后不管你用localhost、127.0.0.1还是后续部署到线上域名,请求都会自动匹配当前访问的域名发送,从根源避免这类跨域问题。
    修正后的AJAX基础配置:
    $.ajax({
        url: "/api/",
        type: "POST",
        enctype: 'multipart/form-data',
        dataType: 'json',
        // 其余data等配置保持原有内容即可
    })
    
  • 修正你写反的回调逻辑:当前代码把成功、失败回调的逻辑完全写反了——success是请求成功触发的回调,你在里面写了错误提示;error是请求失败触发的回调,你反而在里面写结果渲染逻辑,就算请求真的出错也会渲染异常结果,必须调整。
    修正后的回调参考:
    success: function (res) {
        $('.loader').hide()
        $('#title').html("Result")
        let result = (res.responseText).split("-");
        let disease = result[0];
        let accuracy = result[1];
        $('#disease').html("Result: " + disease)
        $('#graph').attr('src', '{% static "graph.png" %}')
        $('.result').show()
    },
    error: function (xhr) {
        $('.loader').hide()
        alert("Error while processing")
    }
    
  • 只有后续前后端分离部署、确实需要跨域请求的时候,才需要安装django-cors-headers扩展配置跨域允许规则,本地调试用相对路径是最简单稳妥的方案,不需要额外装依赖。

内容的提问来源于stack exchange,提问作者Malayanur Vithahavya 092

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:12:28