Express JS: 요청한 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다.
서버에서 API를 실행하고 있고 데이터를 검색하기 위해 서버에 연결하는 프론트 엔드 클라이언트가 있습니다.크로스 도메인 문제에 대해 몇 가지 조사를 해보았는데 효과가 있습니다.하지만 저는 무엇이 바뀌었는지 잘 모르겠습니다.콘솔에 다음 오류가 발생합니다.
XMLHttpRequest가 https://api.mydomain/api/status를 로드할 수 없습니다.요청한 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다.그러므로 오리진 'http://beta.mydomain.com '은 접근이 허용되지 않습니다.응답에는 HTTP 상태 코드 502가 있습니다.
다음 경로 파일을 가지고 있습니다.
var express = require('express');
var router = express.Router();
var Assessment = require('../app/models/assessment');
router.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', 'Content-Type');
next();
});
router.post('/api/status', function (req, res, next) {
getStatus.getStatus(req, res, Assessment);
});
module.exports = router;
그리고 그 경로로 Ajax 호출을 하는 다음 자바스크립트:
var user = {
'uid' : '12345'
};
$.ajax({
data: user,
method: 'POST',
url: 'https://api.mydomain/api/status',
crossDomain: true,
done: function () {
},
success: function (data) {
console.log(JSON.stringify(data));
},
error: function (xhr, status) {
}
});
시도해 본 결과:요청 도메인을 'Access-Control-Allow-Origin' 헤더에 넣기 express에 cors 모듈 사용내 라우터.all function inside middleware
요청 도메인은 HTTP이고 api 도메인은 HTTPS에 있습니다. 하지만 HTTP가 활성화된 상태에서 작동하게 했습니다.
'액세스-제어-허용-발신' 헤더가 왜 전송되지 않는지에 대한 통찰력이 있는 사람이 있습니까?
감사해요.
요청 헤더를 고속 경로에 설정하는 대신 인스턴스 자체를 이렇게 표현하도록 설정해 줄 수 있습니까?
var express = require('express');
var app = express();
var Assessment = require('../app/models/assessment');
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");
next();
});
app.post('/api/status', function (req, res, next) {
// your code goes here
});
module.exports = app;
도움이 되길 바랍니다!
cors npm 을 사용할 수도 있습니다.
**npm i cors**
const cors = require('cors')
var corsOptions = {
origin: '*',
optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
}
app.use(cors(corsOptions));
var routes = require('./api/routes/route'); //importing route
routes(app); //register the route
확인하세요.server.js파일. 아래 예와 같이 보여야 합니다.
const express = require('express');
const bodyParser = require('body-parser');
var cors = require('cors');
const mongoose = require('mongoose');
// create express app
const app = express();
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }))
// parse application/json
app.use(bodyParser.json())
app.use(cors());
언급URL : https://stackoverflow.com/questions/40025450/express-js-no-access-control-allow-origin-header-is-present-on-the-requested
'programing' 카테고리의 다른 글
| Git 상태 - 특정 디렉토리에서만 변경사항을 표시할 수 있는 방법이 있습니까? (0) | 2023.09.26 |
|---|---|
| 자바스크립트 교차 도메인 호출: HTTP에서 HTTPS로 호출 (0) | 2023.09.26 |
| 이동식 좌/우 스와이프를 이용하여 부트스트랩 회전목마 슬라이더를 만드는 방법 (0) | 2023.09.26 |
| C#에서 참조 커서를 반환하는 Oracle Function 실행 (0) | 2023.09.26 |
| 각도 물질 대화상자에서 부모 구성요소로 데이터를 전달하는 방법? (0) | 2023.09.26 |