크로스 도메인(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!