我正在尝试将数据从angular发布到express,但是,每次我发出post请求时都会收到此错误。
OPTIONS http://localhost/post/ net::ERR_CONNECTION_REFUSED(anonymous function) @ angular.js:11209s @ angular.js:11002g @ angular.js:10712(anonymous function) @ angular.js:15287m.$eval @ angular.js:16554m.$digest @ angular.js:16372m.$apply @ angular.js:16662(anonymous function) @ angular.js:24283m.event.dispatch @ jquery.js:4670r.handle @ jquery.js:4338
controller.js:29
并且errorCallback响应对象是:
Object {data: null, status: -1, config: Object, statusText: ""}
我做了一些调整,在SO上查看其他类似的问题,比如添加标题,内容类型等等。但是那里没有运气。
这里似乎有什么问题。 感谢
Controller.js
word.add = function(){
console.log(word.name );
$http({
method:'POST',
url:'http://localhost/post/',
data :word.name,
headers: {'Content-Type': 'application/json'}
}).then(function successCallback(response){
console.log(response);
console.log("Successful");
},function errorCallback(response){
console.log(response);
console.log("Unsuccessful");
});
};
app.js
的相关代码摘录 var routes = require('./routes/index');
app.all('/*', function (request, response, next) {
response.header("Access-Control-Allow-Origin", "*");
response.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
response.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
next();
});
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use('/post', routes);
index.js
var express = require('express');
var router = express.Router();
router.post('/post', function(request, response){
console.log(request.body.name);
response.send('Reached post');
});
module.exports = router;
修改 嗨,我已经尝试过并在我的回复中添加了内容类型标题。 不过,这是同样的错误。
当我使用此方法发布时,相同的代码工作正常。
$http.post('/post',{data: word.name}).success(function(response) {
console.log("success");
}).error(function(err){
console.log("failure")
});
答案 0 :(得分:0)
expressjs默认列在9000端口。因此,您发布的网址应为http://localhost:9000/post/
答案 1 :(得分:0)
您必须在服务器上启用CORS。由于端口在同一服务器上是不同的,因此它将其视为跨域请求。