>  기사  >  웹 프론트엔드  >  nodejs 크로스 도메인을 구성하는 위치

nodejs 크로스 도메인을 구성하는 위치

PHPz
PHPz원래의
2023-04-17 16:36:08700검색

Node.js 환경에서 도메인 간 요청을 할 때 요청이 정상적으로 진행되도록 하려면 특정 구성이 필요합니다. 그렇다면 교차 도메인 구성은 정확히 어디에서 수행됩니까?

먼저 도메인 간 요청이 무엇인지 이해해야 합니다. 교차 출처 요청은 현재 페이지의 소스와 다른 URL에 액세스할 때 클라이언트가 시작한 요청을 나타냅니다. 브라우저의 동일 출처 정책 제한으로 인해 이러한 요청은 전송이 금지됩니다. Node.js는 웹 서버로 실행될 수 있으므로 특별한 요구 사항을 충족하려면 도메인 간 구성도 필요합니다.

Node.js에서 도메인 간 구성을 수행하는 방법에는 일반적으로 서버 측 구성과 클라이언트 측 구성의 두 가지 방법이 있습니다.

  1. 서버 측 구성

Node.js에서는 cors 모듈을 사용하여 도메인 간 요청을 구성할 수 있습니다. cors 모듈을 사용하기 전에 먼저 설치해야 합니다: cors 模块来进行跨域请求的配置。使用 cors 模块前,需要先进行安装:

npm install cors

安装完成后,在具体使用时,只需要引入模块即可:

const express = require('express');
const cors = require('cors');

const app = express();

app.use(cors());

// ...

其中,app.use(cors()) 表示允许所有的域进行访问。如果需要对特定域进行访问授权,可以使用以下方式:

const express = require('express');
const cors = require('cors');

const app = express();

const corsOptions = {
  origin: 'http://example.com'
}

app.use(cors(corsOptions));

// ...

示例中,corsOptions 中指定了允许 http://example.com 地址进行跨域请求。

  1. 在客户端进行配置

如果需要在客户端页面中发起跨域请求,也可以使用 cors 模块来进行配置。在客户端使用 cors 模块时,需要先进行安装:

npm install cors

安装完成后,在具体使用时,可以在客户端代码中进行如下配置:

const axios = require('axios');
const cors = require('cors');

const corsOptions = {
  origin: 'http://example.com'
};

axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
axios.defaults.headers.post['Access-Control-Allow-Origin'] = '*';
axios.defaults.headers.post['Access-Control-Allow-Headers'] = 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With';
axios.defaults.headers.post['Access-Control-Allow-Methods'] = 'PUT,POST,GET,DELETE,OPTIONS';

const instance = axios.create({
  baseURL: 'http://localhost:3000',
  timeout: 1000,
});

instance.defaults.headers.post['Access-Control-Allow-Origin'] = '*';

instance.defaults.withCredentials = true;

instance.defaults.transformRequest = [function(data) {
  data = JSON.stringify(data);
  return data;
}];

instance.defaults.transformResponse = [function(data) {
  if (typeof data === 'string' && data.includes('{') && data.includes('}')) {
    data = JSON.parse(data);
  }
  return data;
}];

instance.interceptors.request.use(function(config) {
  config.withCredentials = true;
  return config;
}, function(error) {
  return Promise.reject(error);
});

instance.interceptors.response.use(function(response) {
  return response;
}, function(error) {
  return Promise.reject(error);
});

instance.use(cors(corsOptions)); 

// ...

其中,instance.use(cors(corsOptions)) 表示允许 http://example.comrrreee

설치가 완료된 후 사용 시 모듈만 소개하면 됩니다:

rrreee

그중 app.use(cors( ))는 모든 도메인의 액세스를 허용한다는 의미입니다. 특정 도메인에 대한 액세스를 승인해야 하는 경우 다음 방법을 사용할 수 있습니다. 🎜rrreee🎜예제에서 corsOptionshttp://example.com을 지정합니다. 주소는 도메인 간 질문이 허용됩니다. 🎜
    🎜클라이언트 측에서 구성🎜🎜🎜클라이언트 페이지에서 도메인 간 요청을 시작해야 하는 경우 구성을 위해 cors 모듈을 사용할 수도 있습니다. 클라이언트에서 cors 모듈을 사용하는 경우 먼저 설치해야 합니다. 🎜rrreee🎜설치가 완료된 후 사용 시 클라이언트 코드에서 다음을 구성할 수 있습니다. 🎜rrreee🎜 그 중 , 인스턴스.use(cors(corsOptions))http://example.com 주소가 도메인 간 요청을 할 수 있음을 나타냅니다. 🎜🎜요약하자면 Node.js 환경의 도메인 간 요청은 서버 측 또는 클라이언트 측에서 구성될 수 있습니다. 실제 시나리오에 따라 도메인 간 구성을 위한 적절한 방법을 선택해야 합니다. 🎜

위 내용은 nodejs 크로스 도메인을 구성하는 위치의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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