使用Vue访问http而不是https的Axios

时间:2018-09-21 12:32:55

标签: vue.js axios

我正在使用vue2和axios进行ajax调用。在页面中,我正在调用各种ajax调用,尽管两个代码相似,但一些作为HTTPS进行,而其他一些则通过HTTP

示例:

        axios.get('/api/' + app.$variable1 + '/get-something/')
        .then(({ data }) =>
        {
            app.array = [];

            for(let i = 0; i < data.length; i++)
            {
                app.vats.push({
                    id:data[i]['id'],
                    name:data[i]['name'],
                    something_else[i]['something_else']
                });
            }
        })

问题: 如何强制Axios 使用HTTPS?

Objs: 我无法手动添加https,例如:“ https://www.example.com/1234/12”,因为我使用的是相对网址(在网址中分配了某些ID,然后重复使用它们进行通话)。

服务器: 1)我通过htaccess强制Https 2)我还在使用安全标头,该标头不允许浏览器脱离“自我”状态

编辑:

因此,尝试着手解决这个问题: 1)在Mounted方法中,我要调用4个单独的API。前两个由于HTTP而失败,后两个通过。我尝试更改命令,它始终是前两个失败的命令。我试图将代码移至Created,这意义不大,并且确定它无法正常工作。

帮助!

1 个答案:

答案 0 :(得分:0)

添加 Axios request interceptor 并将 config.url 从 http 更改为 https。所有请求都将被拦截,您将可以访问基本 URL 方案。

  const instance = axios.create({
    baseURL: 'http://api.com',
  })

  instance.interceptors.request.use(function(config) {
    // change the url scheme from http to https
    config.url = config.url.replace('http://', 'https://')

    return config
  })