第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教webpack和nodejs的跨域問題,ajax總是404。萬分感謝?。?/h1>

請教webpack和nodejs的跨域問題,ajax總是404。萬分感謝??!

喵喵時光機 2019-05-25 13:39:39
??????各位師兄好啊。我在做一個用戶名登錄功能測試的時候,利用ajax以及webpack服務器post跨域請求express服務器的時候遇到點麻煩。我先輸入username,然后onblur之后發(fā)送用戶名至后臺,后臺res.send(req.body.username),然后ajax的success把data打印出來看。然而,卻總是404,估計是跨域失敗的問題???????webpack代碼如下:varpath=require('path');varwebpack=require('webpack');varExtractTextPlugin=require("extract-text-webpack-plugin");varCommonsChunkPlugin=require("webpack/lib/optimize/CommonsChunkPlugin");varproxy=require("http-proxy-middleware");module.exports={devtool:'eval-source-map',entry:{index:['webpack-dev-server/client?http://localhost:8181','webpack/hot/only-dev-server','./public/javascripts/entry.js'],vendor:['react','react-dom','react-router','jquery']},output:{//path:path.resolve(__dirname,'./build'),filename:'bundle.js',publicPath:'/'},devServer:{//這兒有問題?重定向失敗的問題?//contentBase:"./",inline:true,historyApiFallback:true,port:8181,host:"127.0.0.1",proxy:[{context:"/*/*",//跨域的路由設置target:"http://localhost:3000",//跨到哪兒去^-^changeOrigin:true//允許跨域,必不可少}]},module:{loaders:[{test:/\.js?$/,exclude:/node_modules/,loader:'babel-loader',query:{presets:['es2015','stage-0','react'],plugins:[['import',{libraryName:'antd',style:'css'}]]}},{test:/\.css$/,loader:ExtractTextPlugin.extract({fallback:'style-loader',use:'css-loader'})},{test:/\.scss$/,loader:ExtractTextPlugin.extract({fallback:'style-loader',use:'css-loader!sass-loader'})},{test:/\.(png|jpg)$/,loader:'url-loader?limit=8192'}]},plugins:[newwebpack.HotModuleReplacementPlugin(),newExtractTextPlugin('style.css'),newCommonsChunkPlugin({name:'vendor',filename:'vendor.js'})]}??????express服務端代碼如下,主要是最下面一點的設置:varenvironment=process.env.NODE_ENV;varwebpack=require('webpack');varconfig;varexpress=require('express');varpath=require('path');varfavicon=require('serve-favicon');varlogger=require('morgan');varcookieParser=require('cookie-parser');varbodyParser=require('body-parser');varconsolidate=require('consolidate');varapp=express();if(environment==='production'){config=require('./webpack.config.prod.js');}elseif(environment==='development'){config=require('./webpack.config.dev.js');}else{console.log('PleasedefineNODE_ENVfirst');}varcompiler=webpack(config);if(environment==='production'){varWebpackDevMiddleware=require('webpack-dev-middleware');app.use(WebpackDevMiddleware(compiler,{noInfo:true,publicPath:config.output.publicPath}));}elseif(environment==='development'){varWebpackHotMiddleware=require('webpack-hot-middleware');app.use(WebpackHotMiddleware(compiler));}varindex=require('./routes/index');varusers=require('./routes/users');//viewenginesetup//app.engine('html',consolidate.ejs);app.set('viewengine','ejs');app.set('views',path.join(__dirname,'views'));//uncommentafterplacingyourfaviconin/public//app.use(favicon(path.join(__dirname,'public','favicon.ico')));app.use(logger('dev'));app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended:false}));app.use(cookieParser());app.use(express.static(path.join(__dirname,'views')));app.use('/',index);app.use('/users',users);//catch404andforwardtoerrorhandlerapp.use(function(req,res,next){varerr=newError('NotFound');err.status=404;next(err);});//errorhandlerapp.use(function(err,req,res,next){//setlocals,onlyprovidingerrorindevelopmentres.locals.message=err.message;res.locals.error=req.app.get('env')==='development'?err:{};//rendertheerrorpageres.status(err.status||500);res.render('error');});//跨域請求設置app.all('*',function(req,res,next){res.header('Access-Control-Allow-Origin','*');res.header('Access-Control-Allow-Methods','PUT,GET,POST,DELETE,OPTIONS');res.header('Access-Control-Allow-Headers','X-Requested-With');res.header('Access-Control-Allow-Headers','Content-Type');next();});//heremycodesapp.post('/check/:item',function(req,res){if(req.params.item=="user"){varuser=req.body.username;res.send(user);}})app.listen(3000,function(err){if(err){console.error(err);}else{console.log("listenonport3000");}})??????最后是ajax的代碼,其他地方都沒問題,onchange取到user.value的值然后發(fā)送后臺:$.ajax({type:"post",url:"check/user",//配置過devServer中的proxy//dataType:"json",data:{username:user.value},success:(data)=>{console.log(data,$.type(data));return;},error:(xhr)=>{console.log("出錯啦:"+xhr.status)}});嘗試修改過的部分包括以下,但是都不行:ajax的url寫成/check/user或者localhost:服務器端口號webpack的devServer的contentBase處,以及proxy寫成:proxy:{"/check/*":{secure:false,target:"http://localhost:3000",//跨到哪兒去^-^changeOrigin:true//允許跨域,必不可少}}
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻1804條經(jīng)驗 獲得超2個贊

算了,本來準備關閉問題,還是把問題的出處說一下。ajax一直出現(xiàn)404的原因,并不是跨域不成功的問題,也不是ajax寫法的問題,而是后臺app.js里面的404錯誤捕獲造成的:
//catch404andforwardtoerrorhandler
app.use(function(req,res,next){
varerr=newError('NotFound');
err.status=404;
next(err);
});
我經(jīng)過把后臺所有代碼一段一段屏蔽查看影響的時候,發(fā)現(xiàn)屏蔽了以上代碼后,ajax就能正常返回data的值,而不是404錯誤。但是我不太理解為什么會這樣?這個地方難道不是只有在出現(xiàn)404錯誤的時候才把錯誤返回到前臺嗎,為什么并沒有錯誤就返回404???
                            
查看完整回答
反對 回復 2019-05-25
  • 2 回答
  • 0 關注
  • 568 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號