2017-09-08 2 views
2

J'ai un héritage api minimalistes dans un seul fichier python:Set tête Access-Control-Allow-Origin avec impression python

#!C:/Python26/python.exe 
# -*- coding: UTF-8 -*- 
import json 

# code ... 

print "Content-Type: application/json" 
print 
print json.dumps(features) 

Y at-il un moyen de mettre les en-têtes de la même manière que le type de contenu? Vous cherchez quelque chose comme:

print "Header: Access-Control-Allow-Origin *" 

Je souhaite autoriser toutes les demandes entrantes inter-domaines ou les limiter à des hôtes spécifiques.

Répondre

2

Oui, mais le format est plus simple que ce que vous imaginez; il vous suffit de le faire:

print "Content-Type: application/json" 
print "Access-Control-Allow-Origin: *" 
print 
print json.dumps(features) 

Fondamentalement, pas de magie plus se passe sur ce que vous mettez dans les citations des marques il-il est juste une chaîne littérale qui va s'envoyées en est dans le cadre de la réponse. En d'autres termes, les en-têtes d'une réponse HTTP sont du texte brut, tout comme les données JSON que json.dumps(features) place dans le corps de la réponse. La seule magie est assez simple: La façon dont vous savez quelle partie de la réponse est les en-têtes et quelle partie est le corps est qu'il y a une ligne vide (extra-ligne) avant le début du corps; Tout ce qui précède cette nouvelle ligne est traité comme des en-têtes par les navigateurs et autres clients Web, de sorte que vous pouvez y mettre ce que vous voulez, et le serveur Web l'enverra littéralement tel quel.

+0

'imprimer 'HTTP/1.0 200 OK'' et ajouter une définition de taille pour ne pas cocher la réponse entière pour' est-ce correct? ' – dsgdfg

+0

@dsgdfg ouais je n'étais pas sûr que l'extrait de la question était complet, ou peut-être appelé par quelque chose d'autre? La seule partie que je voulais aborder était juste la question spécifique de savoir comment ajouter un en-tête – sideshowbarker