我正在使用Laravel 5.8和开箱即用的预配置Vue.js。
为了在Vue.js组件中进行GET / POST / PUT / DELETE请求,我使用AXIOS如下:
import axios from 'axios'
const obj = axios.create({
baseURL: '/controller-name/action-function-name'
})
export default {
all (params) {
return obj.get('/', params)
},
find (id) {
return obj.get(`/${id}`)
},
store (data) {
return obj.post(``, data)
},
update (id, data) {
return obj.put(`/${id}`, data)
},
delete (id) {
return obj.delete(`/${id}`)
}
}
在我的本地环境中,使用HTTP
虚拟主机,例如http://my-website.com
。直到我将应用程序部署到具有HTTPS
网址的真实托管服务器上,例如https://my-website.com
,我的应用程序无法再运行,并且出现以下错误。
Mixed Content: The page at 'https://my-website.com/path#/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://my-website.com/path/controller-name/action-function-name'. This request has been blocked; the content must be served over HTTPS.
我确实知道,因为我的应用程序正在HTTPS
域上运行,但是AXIOS
发出的请求是通过HTTP
进行的。这就是为什么它不起作用。
我的问题是,为什么AXIOS在发出请求时将HTTPS
隐瞒到HTTP
url中?
我确实使用硬代码网址尝试了以下操作。
import axios from 'axios'
export default {
all (params) {
return obj.get('https://my-website.com/controller-name/action-function-name/', params)
},
find (id) {
return obj.get(`https://my-website.com/controller-name/action-function-name/${id}`)
},
store (data) {
return obj.post(`https://my-website.com/controller-name/action-function-name`, data)
},
update (id, data) {
return obj.put(`https://my-website.com/controller-name/action-function-name/${id}`, data)
},
delete (id) {
return obj.delete(`https://my-website.com/controller-name/action-function-name/${id}`)
}
}
如您所见,所有硬代码url都以https
为前缀。每次单击菜单链接时,AXIOS
总是用https
网址覆盖我的http
硬代码网址。我该如何解决?
答案 0 :(得分:1)
为什么不执行以下操作:
baseURL: 'https://yourdomain.com/',
url: '/controller-name/action-function-name',