>웹 프론트엔드 >프런트엔드 Q&A >Nodejs는 교차 도메인을 구현합니다.

Nodejs는 교차 도메인을 구현합니다.

WBOY
WBOY원래의
2023-05-25 13:38:381689검색

크로스 도메인(Cross-domain)은 한 도메인에서 다른 도메인의 리소스를 요청하려는 문서나 스크립트를 의미합니다. 이 경우 브라우저에 웹 애플리케이션의 보안을 최대화하려는 동일 출처 정책이 있기 때문에 크로스 도메인 문제가 발생합니다. . 즉, 서로 다른 도메인의 클라이언트 스크립트는 명시적인 승인 없이는 서로의 문서 내용을 읽거나 쓸 수 없습니다.

Node.js는 웹 애플리케이션을 쉽게 만들 수 있게 해주는 널리 사용되는 서버 측 JavaScript 런타임 환경입니다. Node.js에서는 여러 가지 방법을 사용하여 도메인 간 요청을 처리할 수 있습니다. 다음은 일반적인 크로스 도메인 처리 방법입니다.

1. CORS 사용

CORS는 "Cross-domain Resource Sharing"의 약어로, 서버가 인증 정보를 서버에 보낼 수 있도록 하는 표준화된 크로스 도메인 솔루션입니다. 클라이언트가 다른 도메인의 리소스에 액세스할 수 있도록 허용합니다. Node.js에서는 CORS를 사용하여 도메인 간 요청을 수행할 수 있습니다.

CORS를 사용하여 Node.js에서 도메인 간 문제를 해결하는 것은 매우 간단합니다. 샘플 코드는 다음과 같습니다.

const express = require('express');
const cors = require('cors');
const app = express();
 
app.use(cors());
 
app.get('/api/data', function (req, res) {
  // 处理请求
});
 
app.listen(3000, function () {
  console.log('Server listening on port 3000');
});

2 JSONP를 사용하세요. 크로스 도메인 문제 해결을 위한 아주 오래된 방법인 이 기술은 HTML 태그의 src 속성이 갖는 크로스 도메인 기능을 활용하고, 스크립트 태그를 동적으로 생성하고 해당 src 속성을 설정하여 다른 도메인의 데이터를 간접적으로 얻습니다. Node.js에서는 JSONP를 사용하여 도메인 간 요청을 수행할 수 있습니다. 샘플 코드는 다음과 같습니다.

const express = require('express');
const app = express();
 
app.get('/api/data', function (req, res) {
  const callback = req.query.callback;
  // 处理请求
  res.send(callback + '(' + JSON.stringify(data) + ');');
});
 
app.listen(3000, function () {
  console.log('Server listening on port 3000');
});

3. 프록시 서버 사용

프록시 서버는 클라이언트 요청을 다른 서버로 전달하는 서버입니다. , 프록시 서버 사용을 통해 클라이언트 요청을 서버 측의 다른 도메인에 있는 리소스로 전달할 수 있으므로 도메인 간 목적을 달성할 수 있습니다. Node.js에서는 http-proxy-middleware를 사용하여 프록시 서버를 구축할 수 있습니다. 샘플 코드는 다음과 같습니다.

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
 
app.use('/api', createProxyMiddleware({
  target: 'http://example.com',
  changeOrigin: true,
}));
 
app.listen(3000, function () {
  console.log('Server listening on port 3000');
});

Summary

Node.js에서 교차 도메인을 달성하는 방법에는 여러 가지가 있으며 그 중 CORS를 사용합니다. JSONP와 프록시 서버를 사용하는 것은 덜 사용되지만 여전히 실행 가능한 솔루션인 반면 편리하고 표준화된 솔루션입니다. 어떤 솔루션을 사용할지는 특정 요구 사항과 시나리오에 따라 선택할 수 있지만 도메인 간 작업은 웹 애플리케이션의 보안에 영향을 미칠 수 있으므로 주의해서 작업해야 합니다.

위 내용은 Nodejs는 교차 도메인을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.