Maison >développement back-end >Tutoriel Python >Explication graphique et textuelle détaillée sur la façon de gérer les problèmes d'erreur de requête inter-domaines dans le framework de bouteilles de Python

Explication graphique et textuelle détaillée sur la façon de gérer les problèmes d'erreur de requête inter-domaines dans le framework de bouteilles de Python

高洛峰
高洛峰original
2017-03-20 09:14:571681parcourir

Cet article présente principalement comment résoudre le problème du rapport d'erreurs de requêtes inter-domaines dans le flaconframework de python Les amis qui en ont besoin peuvent se référer à

<.>utilisation de python Lors du développement du framework de bouteilles, lorsque le front-end utilise ajax pour l'accès inter-domaines, le code

js ne parvient toujours pas à saisir le succès, mais entre une erreur et le statut renvoyé vaut 200. Il est normal d'accéder à l'url directement dans le navigateur. Après avoir appuyé sur F12 dans le navigateur, vous trouverez le message d'erreur suivant

XMLHttpRequest ne peut pas charger http://192.168.0.118 : 8081/get_mobile_number/? id=1. Aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée. L'origine 'null' n'est donc pas autorisée.

Si vous recherchez des erreurs via les moteurs de recherche, vous constaterez que presque toutes les réponses que vous trouvez sont des problèmes inter-domaines. Il vous suffit d'ajouter ce qui suit au code du fichier principal, disent de nombreuses solutions sur les sites Web étrangers. ceci

@hook('after_request')
def enable_cors():
 response.headers['Access-Control-Allow-Origin'] = '*'
En fait, après avoir ajouté la solution trouvée, une erreur s'est toujours produite en regardant l'en-tête http affiché par le navigateur, nous n'avons pas vu le Access-Control-Allow-Origin:* nous. vient d'être ajouté, comme indiqué ci-dessous :

Via DEBUG, entrez le code source de la bouteille pour afficher

J'ai testé ce problème dans le framework bouteille correspondant à python2 et python3 Ce problème existe, nous l'avons changé en :


class HTTPResponse(Response, BottleException):
  def init(self, body=&#39;&#39;, status=None, headers=None, **more_headers):
    super(HTTPResponse, self).init(body, status, headers, **more_headers)
  def apply(self, response):
    response._status_code = self._status_code
    response._status_line = self._status_line
    if self._headers:
      if response._headers:
        response._headers.update(self._headers)
      else:
        response._headers = self._headers
    response._cookies = self._cookies
    response.body = self.body


Vous pouvez voir que le code ajax est normal lorsque vous exécutez à nouveau le code


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!

Déclaration:
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