python - 如何在我的网站空间上使用 python 执行 JSONP?

标签 python apache jsonp

我刚刚检查了我的网站空间,它的签名显示:Apache/2.2.9 (Debian) mod_python/3.3.1 Python/2.5.2 mod_ssl/2.2.9 OpenSSL/0.9.8g

这让我希望 Python 能得到某种程度的支持。为什么 python 被列出两次? mod_python/3.3.1 和 Python/2.5.2 ???

我的网站空间上有一个 cgi-bin 文件夹。

我想要做什么:我需要进行跨站点调用以从服务器获取一些文本数据。文本数据不是 JSON,但我想我应该将其转换为 JSON(或者是否有一个选项可以在没有 JSON 的情况下进行跨站点?)

Python 脚本获取对某些 JSONP 的请求。根据请求(我想我应该以某种方式解析 URL),Python 脚本将从网络服务器加载请求的文本数据文件并将其包装在一些 JSON 中并返回。

有人可以告诉我如何在我的网站空间上使用 python 执行这三个步骤吗?

最佳答案

首先,签名没有列出 python 两次。首发版本mod_python ,这是一个 Apache Web 服务器插件,然后它列出了系统上 python 解释器的版本。

python cgi module - 这确实是一种编写 python 服务器代码的低效方法,但就是这样。最终,您应该考虑众多令人惊叹的 Python Web 框架之一。但是,使用 cgi 模块,您的响应将始终以此开头:

print 'Content-Type: application/json\n\n'

您的 python 脚本将通过 HTTP 请求在服务器上运行。在该脚本中,您将检查请求并通过 URL 值或查询字符串确定要提供的数据。

至少您只需将返回值包装在基本的 JSON 数据结构中。文本数据本身可以只是一个字符串:

import json
text_data = "FOO"
json_data = json.dumps({'text': text_data})
print json_data
# {"text": "FOO"}

对于 JSONP 方面,您通常会检查查询字符串以查看请求是否包含客户端想要的回调函数的特定名称,或者只是默认为“callback”

print "callback(%s);" % json_data
# callback({"text": "FOO"});

返回的是 JSONP 类型的响应,因为当客户端收到它时,会为客户端执行回调。

最后,让我补充一点,您应该知道 python cgi 脚本需要为每个请求(甚至来自同一客户端的重复请求)启动一个全新的 python 解释器进程。在负载增加的情况下,这很容易使服务器不堪重负。因此,人们通常选择 wsgi 路线(apache 中的 mod_wsgi)。 wsgi 允许持久应用程序继续运行,并处理持续的请求。

关于python - 如何在我的网站空间上使用 python 执行 JSONP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089837/

相关文章:

jquery - 如何在错误回调函数中使用 jquery-jsonp 获取失败的 jsonp 请求的 HTTP 错误代码?

python - scikit-learn 中的样本权重在交叉验证中被破坏

python - Pywin32发送 key : "Windows button" keypress

regex - Htaccess - 重定向除一个 URL 之外的所有 URL

apache - 获取 .htaccess 以允许访问指定 IP,但如果来自任何其他 IP,则请求 .htpasswd 用户 + 密码

PHP 重写 url 并保留发布的数据

java - 如何使用 JsonIter 从 json 获取特定的键值,通过使用任何可用的 getter 方法?

python - 如何在 Python 中加入两个生成器?

python - 数据库中的项目(模型)数量与 django RAM 消耗?

javascript - 如何使用 jsonp 将图像发送到服务器?