繁体   English   中英

使用python打印设置标头访问控制允许原点

[英]Set Header Access-Control-Allow-Origin with python print

我在单个python文件中有一个传统的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 *"

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

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

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

基本上,您在引号中放置的内容不会发生任何进一步的变化,它只是文字字符串,将作为响应的一部分原样发送。

换句话说,HTTP响应的标头是纯文本,就像json.dumps(features)放入响应正文中的JSON数据一样。

唯一的魔术很简单:您知道响应的哪一部分是标头,哪一部分是正文,这是因为在正文开始之前有一个空行(多余的换行符)。 浏览器和其他Web客户端将该换行符之前的所有内容都视为标头,因此您可以在其中放置任何内容,Web服务器将按原样发送它。

答案是您需要创建一个包含上述“标头:Access-Control-Allow-Origin *”的HTTP标头

先前建议的仅放置解决方案

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'),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM