【问题标题】:Expressjs 405 POST method not allowedExpressjs 405 POST方法不允许
【发布时间】:2015-04-18 02:38:02
【问题描述】:

Route 在 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
});

不知道怎么回事!这就是我得到的:

【问题讨论】:

  • routes.login 是做什么的?
  • 它从数据库发送用户详细信息,
  • 对...但是它的代码在哪里。它显然没有返回您期望的结果。
  • 我认为这里没有必要!
  • 你的角码中apiUrl的值是多少?...

标签: angularjs node.js express


【解决方案1】:

尝试检查两个请求的标头和内容,两者之间肯定存在差异。您的回复的 Allow 标头显然不包含 POST,因此可能存在一些 CORS 问题。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 2018-12-20
    • 2015-11-16
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2016-12-04
    • 2013-10-01
    相关资源
    最近更新 更多