vue 项目webpack proxyTable只是用于开发环境吗?现在代码在开发环境不跨域,打包到线上竟然跨域了,怎么搞

vue 项目webpack proxyTable只是用于开发环境吗?现在代码在开发环境不跨域,打包到线上竟然跨域了,怎么搞

1 现在开发环境没有使用proxyTable解决跨域,是后台php解决的,
2 在开发环境的时候没有跨域 ,npm run build 打包放到服务器上运行 ,接口就跨域了

这样可以在前端设置什么解决吗

clipboard.png

=======================


let config = {

env: 'development',
baseUrl: 'http://apidev.211shouyintai.com/api'

};
export default config;


const path = require('path');
const os = require('os');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const HappyPack = require('happypack');
var happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length });
function resolve (dir) {

return path.join(__dirname, dir);

}
module.exports = {

entry: {
    main: '@/main',
    'vender-base': '@/vendors/vendors.base.js',
    'vender-exten': '@/vendors/vendors.exten.js'
},
output: {
    path: path.resolve(__dirname, '../dist/dist')
},
module: {
    rules: [
        {
            test: /\.vue$/,
            loader: 'vue-loader',
            options: {
                loaders: {
                    css: 'vue-style-loader!css-loader',
                    less: 'vue-style-loader!css-loader!less-loader'
                },
                postLoaders: {
                    html: 'babel-loader'
                }
            }
        },
        {
            test: /iview\/.*?js$/,
            loader: 'happypack/loader?id=happybabel',
            exclude: /node_modules/
        },
        {
            test: /\.js$/,
            loader: 'happypack/loader?id=happybabel',
            exclude: /node_modules/
        },
        {
            test: /\.js[x]?$/,
            include: [resolve('src')],
            exclude: /node_modules/,
            loader: 'happypack/loader?id=happybabel'
        },
        {
            test: /\.css$/,
            use: ExtractTextPlugin.extract({
                use: ['css-loader?minimize', 'autoprefixer-loader'],
                fallback: 'style-loader'
            })
        },
        {
            test: /\.less$/,
            use: ExtractTextPlugin.extract({
                use: ['css-loader?minimize','autoprefixer-loader', 'less-loader'],
                fallback: 'style-loader'
            }),
        },
        {
            test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/,
            loader: 'url-loader?limit=1024'
        },
        {
            test: /\.(html|tpl)$/,
            loader: 'html-loader'
        }
    ]
},
plugins: [
    new HappyPack({
        id: 'happybabel',
        loaders: ['babel-loader'],
        threadPool: happyThreadPool,
        verbose: true
    })
],
resolve: {
    extensions: ['.js', '.vue'],
    alias: {
        'vue': 'vue/dist/vue.esm.js',
        '@': resolve('../src'),
    }
}

};


const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
const fs = require('fs');
const package = require('../package.json');

module.exports = merge(webpackBaseConfig, {

devtool: '#source-map',
output: {
    publicPath: '/dist/',
    filename: '[name].js',
    chunkFilename: '[name].chunk.js'
},
plugins: [
    new ExtractTextPlugin({
        filename: '[name].css',
        allChunks: true
    }),
    new webpack.optimize.CommonsChunkPlugin({
        name: ['vender-exten', 'vender-base'],
        minChunks: Infinity
    }),
    new HtmlWebpackPlugin({
        title: 'iView admin v' + package.version,
        filename: '../index.html',
        inject: false
    }),
    new CopyWebpackPlugin([
        {
            from: 'src/views/main_components/theme_switch/theme'
        }
    ])
]

});


const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const cleanWebpackPlugin = require('clean-webpack-plugin');
const UglifyJsParallelPlugin = require('webpack-uglify-parallel');
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
const os = require('os');
const fs = require('fs');
const path = require('path');
const package = require('../package.json');

module.exports = merge(webpackBaseConfig, {

output: {
    publicPath: 'http://pmy.211shouyintai.com/dist/',  // 修改 https://iv...admin 这部分为你的服务器域名
    filename: '[name].[hash].js',
    chunkFilename: '[name].[hash].chunk.js'
},
plugins: [
    new cleanWebpackPlugin(['dist/*'], {
        root: path.resolve(__dirname, '../')
    }),
    new ExtractTextPlugin({
        filename: '[name].[hash].css',
        allChunks: true,
    }),
    new webpack.optimize.CommonsChunkPlugin({
        // name: 'vendors',
        // filename: 'vendors.[hash].js'
        name: ['vender-exten', 'vender-base'],
        minChunks: Infinity
    }),
    new webpack.DefinePlugin({
        'process.env': {
            NODE_ENV: '"production"'
        }
    }),
    new webpack.optimize.UglifyJsPlugin({
        compress: {
            warnings: false
        }
    }),
    // new UglifyJsParallelPlugin({
    //     workers: os.cpus().length,
    //     mangle: true,
    //     compressor: {
    //       warnings: false,
    //       drop_console: true,
    //       drop_debugger: true
    //      }
    // }),
    new CopyWebpackPlugin([
        {
            from: 'td_icon.ico'
        },
        {
            from: 'src/styles/fonts',
            to: 'fonts'
        },
        {
            from: 'src/views/main_components/theme_switch/theme'
        }
    ]),
    new HtmlWebpackPlugin({
        title: '胖蚂蚁Pro',
        favicon: './td_icon.ico',
        filename: '../index.html',
        template: '!!ejs-loader!./src/template/index.ejs',
        inject: false
    })
]

});

阅读 2.9k
1 个回答

单纯前端解决不了吧,我记得proxytable本身只是为了开发时使用的,他本身是处理了跨域的一些问题的。你在build之后就和他没关系了,相当于只是一个js去执行。
不知道你前端页面是用什么起的服务,如果是用的nginx的话,可以在里面做一个反向代理。在不就是通过服务端做CORS了。

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