Rumah  >  Artikel  >  hujung hadapan web  >  Di mana untuk mengkonfigurasi domain silang nodejs

Di mana untuk mengkonfigurasi domain silang nodejs

PHPz
PHPzasal
2023-04-17 16:36:08700semak imbas

Apabila membuat permintaan merentas domain dalam persekitaran Node.js, konfigurasi khusus diperlukan untuk membuat permintaan diteruskan seperti biasa. Jadi, di manakah konfigurasi merentas domain dilakukan?

Pertama sekali, kita perlu memahami maksud permintaan merentas domain. Permintaan silang asal merujuk kepada permintaan yang dimulakan oleh klien apabila mengakses URL yang berbeza daripada sumber halaman semasa. Disebabkan sekatan dasar asal yang sama penyemak imbas, permintaan sedemikian dilarang dihantar. Oleh kerana Node.js boleh dijalankan sebagai pelayan web, ia juga memerlukan konfigurasi merentas domain untuk memenuhi keperluan khas.

Biasanya terdapat dua cara untuk melaksanakan konfigurasi merentas domain dalam Node.js, iaitu konfigurasi pada bahagian pelayan dan konfigurasi pada bahagian klien.

  1. Konfigurasikan pada bahagian pelayan

Dalam Node.js, anda boleh menggunakan modul cors untuk mengkonfigurasi permintaan merentas domain. Sebelum menggunakan modul cors, anda perlu memasangnya terlebih dahulu:

npm install cors

Selepas pemasangan selesai, anda hanya perlu memperkenalkan modul apabila menggunakannya:

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

const app = express();

app.use(cors());

// ...

Antaranya, app.use(cors()) bermaksud membenarkan akses daripada semua domain. Jika anda perlu membenarkan akses kepada domain tertentu, anda boleh menggunakan kaedah berikut:

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

const app = express();

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

app.use(cors(corsOptions));

// ...

Dalam contoh, corsOptions menyatakan bahawa alamat http://example.com dibenarkan untuk membuat permintaan merentas domain.

  1. Konfigurasikan pada klien

Jika anda perlu memulakan permintaan merentas domain dalam halaman klien, anda juga boleh menggunakan modul cors untuk konfigurasi. Apabila menggunakan modul cors pada klien, anda perlu memasangnya dahulu:

npm install cors

Selepas pemasangan selesai, anda boleh mengkonfigurasi perkara berikut dalam kod klien apabila menggunakannya:

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)); 

// ...

Antaranya, instance.use(cors(corsOptions)) bermaksud alamat http://example.com dibenarkan untuk membuat permintaan merentas domain.

Ringkasnya, permintaan merentas domain dalam persekitaran Node.js boleh dikonfigurasikan di bahagian pelayan atau di bahagian klien. Ia adalah perlu untuk memilih kaedah yang sesuai untuk konfigurasi merentas domain mengikut senario sebenar.

Atas ialah kandungan terperinci Di mana untuk mengkonfigurasi domain silang nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn