美文网首页
webpack实现跨域请求接口

webpack实现跨域请求接口

作者: 皮卡乒乓 | 来源:发表于2018-06-01 15:41 被阅读0次

    前言:

    当前后台分离开发时,我们经常绕不开跨域的问题,通常我们的解决方法是,在后台在请求头设置过滤,或者jsonp的方式进行,但都有弊端,jsonp只适应get请求,设置请求头可以过滤特定IP,但并不严谨。所以,我尝试在前台进行代理,在网上看了各种文章,各种解决方法后,我自己也尝试了多次,终于解决,所以将自己的解决方法分享给大家。

    问题

    我需要访问的接口,但接口本身不支持跨域
    http://192.168.1.168:8080/portal/services/news/news/class/481.json?pagesize=20&pageindex=1

    方法

    • 修改config下的index.js文件
      默认的代码如下:
    dev: {
        env: require('./dev.env'),
        port: 8080,
        autoOpenBrowser: true,
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        proxyTable: {
          
        },
    

    所以我们需要在proxyTable对象里搞些事情

    dev: {
        env: require('./dev.env'),
        port: 8080,
        autoOpenBrowser: true,
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        proxyTable: {
          '/portal': { 
              target: 'http://192.168.1.168:8080/portal/',  // 这里一定要加上http://
              changeOrigin: true, //启用跨域
              pathRewrite: {
                '^/portal': '/'
              }
          }
        }
    
    • 在请求时则可以这样写
    export const getnews = (param) => {
        //portal一定要写,记得前面斜杠
        return axios.get(`/portal/services/news/news/class/481.json?pagesize=20&pageindex=${param}`);
    }
    
    • 在调用接口的地方则可以
    import { getnews} from '../api/api.js'
    
    //1表示传入的参数
    getnews(1).then((res) => {
          console.log( res.data.resultInfo.data);
    })
    

    相关文章

      网友评论

          本文标题:webpack实现跨域请求接口

          本文链接:https://www.haomeiwen.com/subject/egojjftx.html