vue使用axios跨域如何解决

vue使用axios跨域如何解决

阅读 39.6k
3 个回答

跨域跟vue没什么关系吧,配置服务器的cros,或者jsonp,常用的跨域解决方案就可以了

  • 服务器服务器不支持跨域请求

此时可以在config/index.js中的proxyTable中添加:

    proxyTable: {
      "/WebService.asmx": {
        target: "http://localhost:12900/jsnf_service/",
        logLevel: 'debug',
        changeOrigin: true
      }
    },

这样就可以正常使用axios进行ajax请求了,但这样只能在开发模式下才能使用。打包部署的时候建议使用nginx做代理

  • 服务器端支持跨域

如果能支持跨域那就可以使用jsonp来请求了。jsonp实际上就是通过添加script标签来添加的,请求回来的数据也是js格式。axios目前还不支持,只能自己手动创建script标签,把请求的地址赋给script标签的src属性,最后添加到head标签上,等到请求返回再把标签删掉:

       jsonpRequest: function (a, e) {
            this._ajaxTimer && clearTimeout(this._ajaxTimer);
            this._ajaxTimer = setTimeout(function () {
                
                var request_script = document.createElement('script');
                request_script.setAttribute("id", "request_script");   
                request_script.src = 'http://xxxx'+'&t=' + Date.now();
                window.callback = function (response) {
                    // 移除脚本
                    document.body.removeChild(document.getElementById('request_script'));
                    console.log(response.content);
                }
                document.body.appendChild(request_script);
            }, 500);
        },
新手上路,请多包涵

我的项目没有 config/index.js 这个文件 在哪?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏