Cara mengaktifkan kors di nginx

Cara mengaktifkan kors di nginx

Perkongsian Sumber Sumber Cross-Origin (CORS) adalah ciri keselamatan penting untuk aplikasi web. Ia membolehkan aplikasi web menggunakan sumber dari domain lain sambil menghalang akses yang berniat jahat. Dengan membolehkan CORS di nginx, kami dapat memastikan bahawa aplikasi web kami selamat dan mereka dapat mengakses sumber dari domain lain. Dengan konfigurasi yang betul, kami dapat memastikan permintaan berniat jahat disekat dan aplikasi kami selamat.

Dalam artikel ini, kita akan melihat cara mengaktifkan CORS di nginx.

Cara mengaktifkan kors di nginx

Nginx adalah pelayan web sumber terbuka yang sering digunakan untuk melayani kandungan statik. Ia juga digunakan untuk permintaan proksi ke pelayan web lain, seperti Apache. Untuk membolehkan CORS di nginx, kita perlu menambah beberapa arahan konfigurasi.

Konfigurasi mudah untuk membolehkan CORS di nginx kelihatan seperti ini:

lokasi / add_header "Access-control-Allow-Origin" *; add_header "akses-kawalan-alow-methods" "get, post, options"; add_header "akses-kawalan-alow-headers" "kebenaran";
12345lokasi / add_header "Access-control-Allow-Origin" *; add_header "akses-kawalan-alow-methods" "get, post, options"; add_header "akses-kawalan-alow-headers" "kebenaran";

Arahan pertama menambah tajuk kepada respons yang membolehkan semua asal mengakses sumber. Arahan kedua menambah tajuk yang menentukan kaedah mana yang dibenarkan. Arahan Ketiga menambah tajuk yang membolehkan pengepala kebenaran dihantar dengan permintaan.

Sebagai tambahan kepada arahan ini, anda juga perlu mengkonfigurasi Sub URL dalam konfigurasi Nginx anda. Blok ini akan menentukan URL tertentu yang dibenarkan untuk diakses melalui CORS. Sebagai contoh:

lokasi / api / add_header "akses-kawalan-allow-origin" *; add_header "akses-kawalan-alow-methods" "get, post, options"; add_header "akses-kawalan-alow-headers" "kebenaran";
12345lokasi / api / add_header "akses-kawalan-allow-origin" *; add_header "akses-kawalan-alow-methods" "get, post, options"; add_header "akses-kawalan-alow-headers" "kebenaran";

Konfigurasi ini akan membolehkan asal usul mengakses URL yang bermula dengan /API/. Ia juga mungkin untuk menentukan domain tertentu yang dibenarkan mengakses sumber. Sebagai contoh:

lokasi/api/add_header "akses-kontrol-allow-origin" "https: // contoh.com "; add_header"-control-allow-methods "" get, post, options "; add_header" control-control-allow-headers "" aventition ";
12345lokasi/api/add_header "akses-kontrol-allow-origin" "https: // contoh.com "; add_header"-control-allow-methods "" get, post, options "; add_header" control-control-allow-headers "" aventition ";

Ini hanya akan membenarkan permintaan dari contoh.com untuk mengakses URL yang bermula dengan /API/. Anda boleh membenarkan pelbagai domain dengan mengulangi garis itu dengan domain lain.

Membenarkan Akses-Control-Allow-Origin (CORS) Kebenaran untuk fail tertentu sahaja. Contohnya untuk membolehkan COR untuk fon hanya menggunakan contoh berikut:

jika ($ filename ~* ^.*?\.(eoT) | (OTF) | (ttf) | (woff) $) add_header akses kawalan-allow-origin *;
123jika ($ filename ~* ^.*?\.(eoT) | (OTF) | (ttf) | (woff) $) add_header akses kawalan-allow-origin *;

Sebaik sahaja anda telah menambah arahan konfigurasi yang diperlukan, anda boleh memulakan semula Nginx dan perubahan akan berkuatkuasa.

Konfigurasi Kor Nginx Terbuka Lebar

Berikut adalah fail konfigurasi Nginx Cors yang luas, yang boleh anda gunakan dengan pelayan nginx. Dengan konfigurasi ini, anda boleh mengaktifkan CORS dan parameter lain berdasarkan jenis permintaan.

lokasi / if ($ request_method = 'options') add_header 'control-control-allow-origin "*'; # # om nom nom cookies # add_header 'control-allow-credentials" true'; Add_Header 'Access-Control-Allow-Methods "Get, Post, Options'; # # Header Custom and Headers Pelbagai Pelayar * Harus * Baiklah dengan tetapi bukan # add_header 'Access-Control-Allow-Headers" Dnt, X- CustomHeader, Keep-Alive, User-Agent, X-Requested-With, if-Modified-Since, Cache-Control, Content-Type '; # # Memberitahu pelanggan bahawa maklumat pra-penerbangan ini sah selama 20 hari # add_header 'akses-kontrol-max-age' 1728000; Kandungan-jenis "Teks/Plain Charset = UTF-8 '; Add_Header' Content-Length '0; Return 204; if ($ request_method =' post ') add_header' Access-control-Allow-Origin"*' ; add_header 'control-control-allow-credentials "true'; add_header 'control-control-allow-methods" get, post, options'; add_header 'control-control-alow-headers "dnt,X-Customheader, Keep-Alive, User-Agent, X-Requested-With, if-Modified-Since, Cache-Control, Content-Type '; jika ($ request_method = 'get') add_header 'control-allow-origin "*'; add_header 'control-allow-credentials" true'; add_header 'control-control-allow-methods "get, post, options'; add_header 'control-control-allow-headers" dnt, x-customheader, stet-Alive, user-agent, x-requested-with, if-Modified, if-modified, if-modified, if-modified, if-modified, if-modified, if-modified, if-modified, if-modified, if-modified, if-modified, if-modifin -Si, kawalan cache, jenis kandungan ';
12345678910111213141516171819202122223242526272829303132333435lokasi / if ($ request_method = 'options') add_header 'control-control-allow-origin' '*'; # # Om nom nom cookies # add_header 'control-control-allow-credentials' 'true'; add_header 'akses-kawalan-alow-methods' 'get, post, options'; # # Tajuk dan tajuk tersuai Pelbagai pelayar * harus * ok dengan tetapi bukan # add_header 'akses kawalan-alow-alow-headers' dnt, x-customheader, keep-Alive, user-egent, x-requested-with, Jika diubah suai, kawalan cache, jenis kandungan '; # # Memberitahu pelanggan bahawa maklumat pra-penerbangan ini sah selama 20 hari # add_header 'akses-kontrol-max-age' 1728000; Teks Kandungan-Teks '' Teks ''/Charset Plain = UTF-8 '; add_header 'content-length' 0; kembali 204; jika ($ request_method = 'post') add_header 'control-control-allow-origin' '*'; add_header 'control-allow-credentials' 'true'; add_header 'akses-kawalan-alow-methods' 'get, post, options'; ADD_HEADER 'ACCESS CONTROL-Allow-headers 'dnt, X-Customheader, Keep-Alive, User-Agent, X-Requested-With, if-Modified-Since, Cache-Control, Content-Type'; jika ($ request_method = 'get') add_header 'control-control-allow-origin' '*'; add_header 'control-allow-credentials' 'true'; add_header 'akses-kawalan-alow-methods' 'get, post, options'; add_header 'akses-kawalan-alow-headers' 'dnt, x-customheader, stet-arive, user-egent, x-requested-with, if-modified-ain, cache-control, content-type';

Sumber: https: // michielkalkman.com/coretan/nginx-cors-open-configuration/

Menguji Konfigurasi CORS Anda

Sebaik sahaja anda telah mengaktifkan CORS di nginx, anda harus menguji konfigurasi anda untuk memastikan ia berfungsi dengan baik. Cara paling mudah untuk melakukan ini adalah dengan menggunakan alat seperti Postman atau Curl untuk membuat permintaan kepada sumber yang anda ingin uji.

Semasa membuat permintaan, anda harus menambah tajuk asal. Contohnya, jika anda menguji URL yang bermula dengan /API/, Anda harus menambah asal header: https: // contoh.com. Anda juga harus menambah pengepala kaedah kawalan kawalan akses dengan kaedah yang ingin anda uji.

curl -v http: // your_domain.com  

Sebaik sahaja anda membuat permintaan, anda harus menyemak jawapannya. Sekiranya CORS diaktifkan dengan betul, anda harus melihat pengepala asal-Accontrol-Allow-Origin dengan nilai asal yang anda nyatakan dalam permintaan.

Memahami permintaan CORS

Untuk memahami bagaimana COR berfungsi, penting untuk memahami pelbagai jenis permintaan yang boleh dihantar. Terdapat dua jenis permintaan: permintaan mudah dan permintaan preflight.

Permintaan ringkas adalah permintaan yang tidak memerlukan pemeriksaan preflight. Permintaan ini biasanya mendapat atau permintaan pos yang tidak mempunyai tajuk tersuai.

Permintaan Preflight adalah permintaan yang lebih kompleks yang memerlukan langkah tambahan. Permintaan ini biasanya akan mempunyai tajuk tersuai atau kaedah selain mendapatkan atau menyiarkannya. Sebelum permintaan dapat dihantar, penyemak imbas akan membuat permintaan awal, yang dikenali sebagai permintaan preflight, untuk menentukan apakah permintaan itu harus dibenarkan.

Sekiranya permintaan preflight dibenarkan, penyemak imbas akan menghantar permintaan sebenar. Sekiranya permintaan preflight tidak dibenarkan, penyemak imbas tidak akan menghantar permintaan sebenar dan sumbernya tidak akan diakses.

Proses Perkongsian Sumber Sumber Asas (CORS)

Kesimpulan

Dalam artikel ini, kita melihat bagaimana untuk membolehkan CORS di nginx. Kami melihat bagaimana untuk menambah arahan konfigurasi yang diperlukan dan blok lokasi ke konfigurasi nginx kami. Kami juga melihat bagaimana untuk menguji konfigurasi CORS kami dan bagaimana memahami permintaan CORS.

Terima kasih untuk membaca! Sekiranya anda mempunyai sebarang pertanyaan atau komen, sila tinggalkannya di bahagian komen di bawah.