鍍金池/ 問答/人工智能  PHP  HTML/ vue 項目webpack proxyTable只是用于開發(fā)環(huán)境嗎?現(xiàn)在代碼在開

vue 項目webpack proxyTable只是用于開發(fā)環(huán)境嗎?現(xiàn)在代碼在開發(fā)環(huán)境不跨域,打包到線上竟然跨域了,怎么搞

vue 項目webpack proxyTable只是用于開發(fā)環(huán)境嗎?現(xiàn)在代碼在開發(fā)環(huán)境不跨域,打包到線上竟然跨域了,怎么搞

1 現(xiàn)在開發(fā)環(huán)境沒有使用proxyTable解決跨域,是后臺php解決的,
2 在開發(fā)環(huán)境的時候沒有跨域 ,npm run build 打包放到服務(wù)器上運行 ,接口就跨域了

這樣可以在前端設(shè)置什么解決嗎

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 這部分為你的服務(wù)器域名
    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
    })
]

});

回答
編輯回答
凝雅

單純前端解決不了吧,我記得proxytable本身只是為了開發(fā)時使用的,他本身是處理了跨域的一些問題的。你在build之后就和他沒關(guān)系了,相當(dāng)于只是一個js去執(zhí)行。
不知道你前端頁面是用什么起的服務(wù),如果是用的nginx的話,可以在里面做一個反向代理。在不就是通過服務(wù)端做CORS了。

2018年9月11日 07:46