在我的laravel项目中,我有一个如下定义的邮政路线:
Route::post('myroute', function(){
// Do things here
}
在我的app.js中,我使用的是名为axios的库,我也将myroute
作为axios.post()
方法的参数传递:
axios.post('myroute', { value: myargument }).then(function(response) {
// Do thigs here
}
在我的本地机器中,axios调用工作正常。但是在远程机器中,它并没有。因为在服务器中,应用程序不直接在根目录下上传。它已上传到:http://example.com/level1/level2
目录。
因此,当在服务器上执行ajax调用时,它会返回503服务不可用响应,因为它会查找http://example.com/myroute
。但应用程序根本不存在。如何告诉它从我当前所在的目录(level2)中寻找myroute
路由而不是从root?
我尝试更改axios.post()
中的路径,如下所示:/../../myroute
但是ajax调用仍指向根目录。但只有在我对此路径进行硬编码时才有效:/level1/level2/myroute
。我该怎么办呢?
答案 0 :(得分:0)
两种环境中的相对路径可能相同吗?如果使用/启动路径,则会查找根目录。如果您只是foldername/asset.ext
,它将基于脚本的工作目录。
答案 1 :(得分:0)
如果我正确理解,那么您需要使用java脚本生成您的URL发送。 使用 location.href 获取当前网址
var url = location.href+'/myroute';
答案 2 :(得分:0)
您可以这样使用已配置的axios实例。
import axios from 'axios';
var instance = axios.create();
if (process.env.NODE_ENV == 'production') {
instance.defaults.baseURL = 'http://example.com/level1/level2'
}
export default instance
现在您使用此实例而不是默认axios。 它将使用生产中的子目录URL