그래서 먼저 내 각도 앱이 있습니다.
var app = angular.module('app', []);
angular.module('app.controllers', []);
app.config(function($httpProvider){
delete $httpProvider.defaults.headers.common['X-Requested-With'];
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
});
다음은 각도 컨트롤러입니다.
angular.module('app').controller('loginController', ['$scope', '$http', function($scope, $http){
$http({
method: 'POST',
url: 'https://xxx-xxx.c9users.io:xxxx/api/registerUser',
headers: { 'Content-Type': 'application/json' },
data: { test: 'something' }
});
}]);
그리고 내 nodejs 코드가 있습니다.
var express = require('express');
var app = express();
var bodyParser= require('body-parser');
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
next();
});
app.use(bodyParser.json());
var server = app.listen(process.env.PORT, function () {
var host = server.address().address
var port = server.address().port
});
app.post('/api/registerUser', function (req, res) {
//req.body.test do something..
});
그래서이 요청을 노드 서버에 보내려고 할 때마다. 내 브라우저 콘솔에 다음 오류가 발생합니다.
* 옵션 https://xxx-xxx.c9users.io:xxx/api/registerUser *
XMLHttpRequest는 https://xxx-xxx.c9users.io:xxxx/api/registerUser를 로드 할 수 없습니다 . 프리 플라이트에 대한 응답에 잘못된 HTTP 상태 코드 404가 있습니다.
그리고 서버는 요청을받지 않습니다. 하지만 이렇게 부르면 :
$http.post('https://xxx-xxx.c9users.io:xxxx/api/registerUser');
서버는 요청을받는 데 문제가 없지만 데이터는 없습니다. 내가 여기서 뭘 잘못하고 있니?
다른 도메인에서 요청하는 경우 서버 측에서 Cross Origin Resources를 허용해야합니다.
다음은 익스프레스 프레임 워크를 사용하여 CORS를 켜는 방법에 대한 작은 노드 스 니펫입니다.
NodeJS 코드 스 니펫
allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
if ('OPTIONS' === req.method) {
res.send(200);
} else {
next();
}
};
app.use(allowCrossDomain);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다