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

AJAX调用URL报错:Laravel调用同级sms.php路径错误如何修复?

修复AJAX请求路径错误的解决方案

这个问题很常见,核心原因是你写的请求路径是相对路径,导致浏览器错误地把localhost当成了当前Laravel服务路径的子目录,最终拼出了http://localhost:8000/localhost/sms.php这种错误地址。下面分两种常见场景给你具体的修复方法:

场景1:Laravel和sms.php都在Apache下运行(推荐)

如果你的Laravel是部署在XAMPP的Apache服务中(比如把Laravel的public目录设为Apache的子站点,或者整个Laravel项目在htdocs下),直接把AJAX的url改成根相对路径即可:

$.ajax({
    url: '/sms.php',
    type: "get",
    data: {},
    success: function(data){
        alert('ok');
    }
});

这里的/代表XAMPP的网站根目录htdocs,所以请求会直接指向http://localhost/sms.php,路径就完全正确了。

场景2:用php artisan serve运行Laravel(端口8000)

这种情况下,Laravel的开发服务器和XAMPP的Apache服务是两个独立的服务,分别在8000和80端口,直接跨端口请求会触发浏览器的跨域拦截。你有两种解决方式:

方法A:切换到Apache运行Laravel

把Laravel部署到Apache下(比如配置虚拟主机,或者直接把Laravel放在htdocs下,访问http://localhost/laravel/public),之后就可以用场景1的根路径方法,避免跨域问题。

方法B:允许跨域请求并使用完整URL

如果坚持用php artisan serve,需要修改AJAX请求为完整URL,同时在sms.php中添加跨域允许的响应头:

首先修改AJAX代码:

$.ajax({
    url: 'http://localhost/sms.php',
    type: "get",
    data: {},
    success: function(data){
        alert('ok');
    }
});

然后在sms.php的最开头添加以下代码,允许来自Laravel服务的跨域请求:

header("Access-Control-Allow-Origin: http://localhost:8000");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");

最后别忘了检查一下sms.php的文件权限,确保XAMPP的Apache用户有读取该文件的权限哦。

内容的提问来源于stack exchange,提问作者Mujahidur Rahman Mithun IUB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:44:29