不允许使用 Expressjs 405 POST 方法
Expressjs 405 POST method not allowed
路由在 POSTMAN chrome 扩展中运行良好,而 Angular 则不然。
好吧,我的 Express js 代码:
var express = require('express');
var router = express.Router();
var app = express();
var bodyParser = require('body-parser')
var routes = require('./routes');
var connection = require('express-myconnection');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
/** Serve our app on root path */
app.use('/', express.static('app'));
/** Login API */
app.post('/login', routes.login);
这里是 Angular 代码:
$http({
method: 'POST',
url: apiUrl + 'login',
headers: {
'Content-Type': 'application/x-www-form-urlencoded' // necessary for expressjs
},
transformRequest: function(obj) {
var str = [];
for (var p in obj) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
},
data: user
});
不知道怎么了!这就是我得到的:
尝试检查两个请求的 header 和内容,两者之间肯定存在差异。您的回复 Allow
header 显然不包含 POST,因此可能存在一些 CORS 问题。
路由在 POSTMAN chrome 扩展中运行良好,而 Angular 则不然。
好吧,我的 Express js 代码:
var express = require('express');
var router = express.Router();
var app = express();
var bodyParser = require('body-parser')
var routes = require('./routes');
var connection = require('express-myconnection');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
/** Serve our app on root path */
app.use('/', express.static('app'));
/** Login API */
app.post('/login', routes.login);
这里是 Angular 代码:
$http({
method: 'POST',
url: apiUrl + 'login',
headers: {
'Content-Type': 'application/x-www-form-urlencoded' // necessary for expressjs
},
transformRequest: function(obj) {
var str = [];
for (var p in obj) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
},
data: user
});
不知道怎么了!这就是我得到的:
尝试检查两个请求的 header 和内容,两者之间肯定存在差异。您的回复 Allow
header 显然不包含 POST,因此可能存在一些 CORS 问题。