Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengaturcaraan pelayan Python: menggunakan django-cors-header untuk menyelesaikan masalah merentas domain

Pengaturcaraan pelayan Python: menggunakan django-cors-header untuk menyelesaikan masalah merentas domain

王林
王林asal
2023-06-18 11:01:441911semak imbas

Dengan perkembangan pesat teknologi bahagian hadapan, semakin banyak tapak web menggunakan seni bina pemisah bahagian hadapan dan bahagian belakang Bahagian hadapan dan belakang menggunakan AJAX atau FETCH untuk berkomunikasi bagi meningkatkan pengalaman pengguna. Walau bagaimanapun, di bawah seni bina ini, kami sering menghadapi masalah merentas domain, jadi kami perlu menggunakan beberapa pemalam untuk menyelesaikan masalah ini. Antaranya, Django-cors-headers ialah pilihan yang sangat baik Ia boleh menyelesaikan masalah merentas domain dengan sangat mudah dan mudah dan mudah digunakan.

1. Apakah itu silang domain?

Dalam pembangunan web, perkongsian sumber silang asal (Cross-Origin Resource Sharing) merujuk kepada masalah apabila penyemak imbas menghantar permintaan AJAX, nama domain yang diminta adalah berbeza daripada nama domain halaman semasa, menyebabkan permintaan itu ditolak. Ini direka untuk meningkatkan keselamatan pelayar.

2. Apakah itu django-cors-headers?

django-cors-headers ialah aplikasi Django yang mengendalikan isu merentas domain antara bahagian belakang Django dan halaman web hujung hadapan. Ia boleh menyelesaikan masalah permintaan AJAX dengan mudah antara nama domain yang berbeza, membawa pengalaman pengguna yang lebih baik.

3. Pasang django-cors-headers

Untuk menggunakan django-cors-headers, anda perlu terlebih dahulu memastikan anda telah memasang dan mendayakan Django. Seterusnya, anda boleh memasang django-cors-headers melalui pip:

pip install django-cors-headers

Selepas pemasangan selesai, anda perlu mengkonfigurasinya dalam fail settings.py Django. Tambah dalam INSTALLED_APPS:

INSTALLED_APPS = [
    # ...
    'corsheaders',
    # ...
]

Kemudian tambahkan MIDDLEWARE:

MIDDLEWARE = [
    # ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    # ...
]

Akhir sekali, tambah di bahagian bawah tetapan.py:

CORS_ORIGIN_ALLOW_ALL = True

Ini melengkapkan django-cors- Pemasangan dan konfigurasi daripada tajuk. Nota: Dalam persekitaran pengeluaran, kebenaran khusus domain harus digunakan dan bukannya membenarkan sebarang asal.

4. Gunakan django-cors-headers

Selepas memasang dan mengkonfigurasi django-cors-header, kami boleh menggunakannya dalam pandangan Django untuk menyelesaikan isu merentas domain. Sebagai contoh, kita boleh menambah @csrf_exempt dan @require_http_methods(['POST']) pada fungsi paparan dan menambah kod berikut pada hasil pulangan:

from django.http import JsonResponse

from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods

from corsheaders.decorators import cors_exempt

@csrf_exempt
@require_http_methods(['POST'])
@cors_exempt
def your_view(request):
    data = {'result': 'success'}
    response = JsonResponse(data)
    response['Access-Control-Allow-Origin'] = '*'
    response['Access-Control-Allow-Methods'] = 'POST, OPTIONS'
    response['Access-Control-Allow-Headers'] = 'Accept, Content-Type, Authorization'
    response['Access-Control-Max-Age'] = '86400'
    return response

Selepas konfigurasi ini, apabila menggunakan permintaan AJAX atau FETCH Tidak akan ada isu merentas domain.

5. Ringkasan

Untuk aplikasi web yang menggunakan AJAX atau FETCH untuk pemisahan bahagian hadapan dan belakang, isu merentas domain ialah masalah yang mesti diselesaikan. django-cors-headers ialah pilihan yang sangat baik, ia boleh menyelesaikan masalah merentas domain dengan mudah dan menyediakan banyak pilihan konfigurasi yang boleh digunakan mengikut situasi sebenar. Dengan penambahan django-cors-header, kami boleh membangunkan aplikasi web yang hebat dengan lebih mudah dan memberikan pengalaman yang lebih baik.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: menggunakan django-cors-header untuk menyelesaikan masalah merentas domain. 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