Exemple de code pour la gestion des requêtes inter-domaines Django

不言
Libérer: 2018-05-02 14:18:56
original
1383 Les gens l'ont consulté

Cet article présente principalement l'exemple de code sur le traitement des requêtes inter-domaines Django, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Django gère Ajax. requêtes inter-domaines. Accès au domaine

Lors de l'utilisation de javascript pour l'accès ajax, l'erreur suivante se produit

Cause de l'erreur : JavaScript est destiné à la sécurité. raisons et l'accès entre domaines n'est pas autorisé. La figure suivante est une explication de l'accès inter-domaines :

Concept :

Le cross-domain js mentionné ici fait référence à js ou Python effectue la transmission de données ou la communication entre différents domaines, par exemple en utilisant ajax pour demander des données à un domaine différent, ou en utilisant js pour obtenir des données dans le cadre (Django) de différents domaines de la page. Tant que le protocole, le nom de domaine ou le port sont différents, ils sont considérés comme des domaines différents.

Solution

1.Modifiez le fichier vues.py

Modifiez la fonction d'implémentation de l'API correspondante dans vues.py. Autoriser d'autres domaines à demander des données via Ajax :

todo_list = [
  {"id": "1", "content": "吃饭"},
  {"id": "2", "content": "吃饭"},
]


class Query(View):
  @staticmethod
  def get(request):
    response = JsonResponse(todo_list, safe=False)
    response["Access-Control-Allow-Origin"] = "*"
    response["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS"
    response["Access-Control-Max-Age"] = "1000"
    response["Access-Control-Allow-Headers"] = "*"
    return response

  @staticmethod
  def post(request):
    print(request.POST)
    return HttpResponse()
Copier après la connexion

2 Ajoutez le middleware django-cors-headers

Adresse GitHub : https. : //github.com/ottoyiu/django-cors-headers

2.1. Installer pip install django-cors-headers

2 Ajouter une application

INSTALLED_APPS = (
  ...
  'corsheaders',
  ...
)
Copier après la connexion

2.3 Ajouter un middleware

MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10
  ...
  &#39;corsheaders.middleware.CorsMiddleware&#39;,
  &#39;django.middleware.common.CommonMiddleware&#39;,
  ...
]
Copier après la connexion

2.4 Configurer l'adresse qui permet l'accès cross-site à ce site

CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
   &#39;localhost:63343&#39;,
)

# 默认值是全部:
CORS_ORIGIN_WHITELIST = () # 或者定义允许的匹配路径正则表达式.
CORS_ORIGIN_REGEX_WHITELIST = (&#39;^(https?://)?(\w+.)?>google.com$&#39;, )  # 默认值:
CORS_ORIGIN_REGEX_WHITELIST = ()
Copier après la connexion

2.5 Définir les méthodes d'accès autorisées

CORS_ALLOW_METHODS = (
&#39;GET&#39;,
&#39;POST&#39;,
&#39;PUT&#39;,
&#39;PATCH&#39;,
&#39;DELETE&#39;,
&#39;OPTIONS&#39;
)
Copier après la connexion

2.6 Définir les en-têtes autorisés :

Valeur par défaut :

CORS_ALLOW_HEADERS = (
&#39;x-requested-with&#39;,
&#39;content-type&#39;,
&#39;accept&#39;,
&#39;origin&#39;,
&#39;authorization&#39;,
&#39;x-csrftoken&#39;
)
Copier après la connexion

Recommandations associées :

Django utilise la journalisation pour Exemples de journaux d'impression

Téléchargement et accès de l'avatar de l'utilisateur réel du projet Django

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!