cari

Rumah  >  Soal Jawab  >  teks badan

Isu CORS NextJs

<p>Saya mempunyai aplikasi Next.js yang dihoskan pada Vercel (www.example.com) yang memerlukan bahagian belakang yang dihoskan pada pelayan yang berbeza daripada api.example.com (api.example.com NET Core Web API untuk berkomunikasi). . Api web teras .NET dikonfigurasikan untuk membenarkan CORS, tetapi Next.js saya terus merungut bahawa ia tidak dapat memaparkan data apabila saya mendapatkannya menggunakan AXIOS kerana responsnya tiada pengepala allow-cors: </p> <blockquote> <p>Akses kepada XMLHttpRequest di 'https://api.example.com' dari asal 'http://www.example.com' telah disekat oleh dasar CORS: Respons kepada permintaan prapenerbangan gagal semakan kawalan akses : Pengepala 'Access-Control-Allow-Origin' tidak wujud pada sumber yang diminta</p> </blockquote> <p>Apabila saya menjalankannya secara setempat menggunakan <code>npm run dev</code> ia berfungsi dengan baik, tetapi apabila saya membinanya dan kemudian menjalankan <code>npm run start</code></p> ; <p>Adakah sesiapa tahu cara menyelesaikan isu kors dalam pengeluaran? </p>
P粉919464207P粉919464207462 hari yang lalu580

membalas semua(2)saya akan balas

  • P粉438918323

    P粉4389183232023-08-30 11:03:32

    Jika anda mahu nextjs 中使用 cors 库,我为其创建了一个库 nextjs-cors.

    https://www.npmjs.com/nextjs-cors

    https://github.com/yonycalsin/nextjs-cors

    import NextCors from 'nextjs-cors';
    
    async function handler(req, res) {
       // Run the cors middleware
       // nextjs-cors uses the cors package, so we invite you to check the documentation https://github.com/expressjs/cors
       await NextCors(req, res, {
          // Options
          methods: ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE'],
          origin: '*',
          optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
       });
    
       // Rest of the API logic
       res.json({ message: 'Hello NextJs Cors!' });
    }

    balas
    0
  • P粉044526217

    P粉0445262172023-08-30 09:16:21

    Saya jumpa penyelesaiannya di sini:

    Pada asasnya, saya hanya perlu menambah fail next.config.js dalam direktori root dan tambah yang berikut:

    // next.config.js
    module.exports = {
        async rewrites() {
            return [
              {
                source: '/api/:path*',
                destination: 'https://api.example.com/:path*',
              },
            ]
          },
      };

    balas
    0
  • Batalbalas