Bagaimana Mengaktifkan CORS di Apache dan Nginx?

Batasi atau izinkan berbagi sumber daya antar situs menggunakan tajuk CORS.


Header CORS (Cross-Origin Resource Sharing) didukung di semua browser modern.

Bisakah saya menggunakan kor? Data tentang dukungan untuk fitur kor di peramban utama dari caniuse.com.

Secara default, browser membatasi permintaan HTTP lintas-asal melalui skrip. Dan, CORS dapat berguna untuk menggunakan kembali sumber daya aplikasi umum pada aplikasi web lain. Setelah ditambahkan dengan benar, itu memerintahkan browser untuk memuat aplikasi dari asal yang berbeda.

Ada enam jenis header CORS yang populer yang dapat dikirim oleh server. Mari kita jelajahi mereka.

Akses-Kontrol-Bolehkan-Asal

Yang paling populer yang memberitahu browser untuk memuat sumber daya pada asal yang diizinkan. Ini mendukung wildcard (*) dan melakukannya setiap domain dapat memuat sumber daya. Namun, ia memiliki opsi untuk mengizinkan asal tertentu.

Apache

Tambahkan yang berikut ini di httpd.conf atau file konfigurasi lain yang sedang digunakan.

Header mengatur Access-Control-Allow-Origin "*"

Mulai ulang Apache untuk menguji. Anda harus melihatnya di tajuk respons.

Dan, untuk mengizinkan dari asal tertentu (mis: https://gf.dev), Anda dapat menggunakan yang berikut ini.

Header mengatur Access-Control-Allow-Origin "https://gf.dev"

Nginx

Ini adalah contoh untuk mengizinkan origin https://geekflare.dev. Tambahkan berikut ini di blok server nginx.conf atau file konfigurasi yang digunakan.

add_header Access-Control-Allow-Origin "https://geekflare.dev";

Metode Akses-Kontrol-Bolehkan

Browser dapat memulai satu atau lebih metode HTTP untuk mengakses sumber daya. Contoh: – DAPATKAN, PUT, OPSI, PUT, HAPUS, POS

Apache

Untuk memperbolehkan hanya GET dan POST saja.

Header menambahkan Access-Control-Allow-Methods "DAPATKAN, POST"

Nginx

Katakanlah Anda perlu menambahkan metode DELETE dan OPTIONS, maka Anda dapat menambahkan seperti di bawah ini.

add_header Access-Control-Allow-Methods "HAPUS, OPSI";

Setelah dimulai ulang, Anda akan melihatnya di tajuk respons.

Access-Control-Allow-Header

Header berikut ada dalam daftar aman berarti Anda tidak perlu menambahkannya. Ini seharusnya bekerja secara default.

  • Jenis konten
  • Menerima
  • Konten-Bahasa
  • Bahasa Terima

Namun, jika Anda perlu menambahkan yang khusus, Anda dapat melakukannya. Ini mendukung satu atau lebih header.

Apache

Katakanlah Anda ingin mengizinkan header X-Custom-Header dan X-Powered-By.

Header selalu mengatur Access-Control-Allow-Header "X-Custom-Header, X-Powered-By"

Setelah dimulai ulang, Anda akan melihat hasilnya di tajuk respons.

Nginx

Contoh menambahkan X-Pelanggan-Perangkat Lunak dan header X-My-Custom.

add_header Access-Control-Allow-Header "X-Custom-Software, X-My-Custom";

Access-Control-Expose-Header

Header berikut sudah daftar aman. Berarti, Anda tidak perlu menambahkan jika Anda ingin mengeksposnya.

  • Kedaluwarsa
  • Pragma
  • Kontrol Cache
  • Terakhir diubah
  • Konten-Bahasa
  • Jenis konten

Tetapi, jika Anda membutuhkan selain daftar aman, maka Anda dapat mengizinkannya sebagai berikut.

Apache

Gunakan wildcard untuk mengekspos semua header.

Header selalu mengatur Access-Control-Expose-Header "*"

Catatan: wildcard masih tidak mengekspos tajuk Otorisasi, dan jika Anda memerlukannya, Anda harus menyebutkannya secara eksplisit.

Header selalu mengatur Access-Control-Expose-Header "Otorisasi, *"

Hasilnya akan terlihat seperti ini.

Nginx

Jika Anda ingin mengekspos header Asal.

add_header Access-Control-Expose-Headers "Asal";

Access-Control-Max-Age

Apakah Anda tahu data dari header Access-Control-Allow-Header dan Access-Control-Allow-Methods dapat di-cache? Itu bisa di-cache hingga 24 jam di Firefox, 2 jam di Chrome (76+).

Untuk menonaktifkan caching, Anda bisa menjaga nilainya sebagai -1

Apache

Melakukan cache selama 15 menit.

Header selalu mengatur Access-Control-Max-Age "900"

Seperti yang Anda lihat, nilainya dalam hitungan detik.

Nginx

Untuk cache selama satu jam.

add_header Access-Control-Max-Age "3600";

Setelah ditambahkan, mulai ulang Nginx untuk melihat hasilnya.

Akses-Kontrol-Bolehkan-Kredensial

Hanya ada satu opsi untuk ditetapkan di sini – benar. Ini untuk memungkinkan jika Anda ingin mengekspos kredensial seperti cookie, sertifikat TLS, otorisasi.

Apache

Header selalu mengatur Access-Control-Allow-Credentials "benar"

Nginx

add_header Access-Control-Allow-Kredensial "benar";

dan hasilnya.

Memverifikasi hasil

Setelah tajuk yang diperlukan ditambahkan, Anda dapat menggunakan alat pengembang bawaan atau pemeriksa header HTTP online.

Kesimpulan

Saya harap hal di atas membantu Anda menerapkan header CORS di Apache HTTP dan server web Nginx untuk keamanan yang lebih baik. Anda juga mungkin tertarik untuk menerapkan tajuk aman yang direkomendasikan OWASP.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map