使用python print设置Header Access-Control-Allow-Origin

时间:2017-09-08 07:50:37

标签: python http request http-headers cors

我在一个python文件中有一个遗留的minimalistic api:

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

# code ...

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

有没有办法以与内容类型相同的方式设置标头?寻找类似的东西:

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

我想允许所有跨域传入请求,或将其限制为特定主机。

2 个答案:

答案 0 :(得分:2)

是的,但格式比你想象的要简单;你只需要这样做:

json.dumps(features)

基本上,你在引号中加入的内容没有进一步的魔力 - 它只是一个文字字符串,它将作为响应的一部分按原样发送。

换句话说,HTTP响应的标头是纯文本,就像{{1}}放入响应主体的JSON数据一样。

唯一的魔法很简单:你知道响应的哪一部分是标题以及哪个部分是正文的方式是在正文开始之前有一个空行(额外的换行符);浏览器和其他Web客户端将该换行符视为标题之前的所有内容 - 因此您可以将所需内容放在那里,而Web服务器将按原样发送它。

答案 1 :(得分:0)

答案是你需要创建一个HTTP header,其中包括提到的“Header:Access-Control-Allow-Origin *”。

之前建议的解决方案只是放置

print "Access-Control-Allow-Origin: *"
脚本中的

失败,因为它没有创建所需的CR-LF行结尾,并且两个连续的CR-LF结束标题。还要注意打印命令的自动换行。这对我有用:

print("Access-Control-Allow-Origin: *\r\n"),
print('Content-Type: text/plain; charset=ISO-8859-1\r\n\r\n'),