programing

Express JS: 요청한 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다.

sourcejob 2023. 9. 26. 22:19
반응형

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

반응형