繁体   English   中英

从 Apache cgi-bin Python 脚本返回 JSON 数据

[英]Returning JSON data from Apache cgi-bin Python script

我正在尝试从在本地 Apache 服务器 (xampp) 上运行的 Python CGI 脚本返回 JSON 数据。

脚本本身运行良好,没有问题,并且返回了预期的结果,但是尽管脚本输出了 header

print("Content-type: application/json; charset: utf-8")

当向同一脚本发出 AJAX 请求(从客户端 javascript)时,请求失败。 运行后

#!C:\Python39\python.exe -u
import cgi

cgi.test()
exit(0)

结果在Shell Environment: section下接受的response headers如下

HTTP_ACCEPT
 text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

这导致 JSON 响应被发送为 HTML,这打破了请求,因为响应是在 JSON 中发送的,但请求只接受 HTML 的响应。

我尝试通过在/cgi-bin目录中的.htaccess文件中添加接受的 MIME 类型来解决此问题

AddType application/json .py

但这不起作用,我不希望强制将 my.py 脚本解释为 a.json 文件是所需的解决方案,因为我希望 output 为 JSON,而不是文件本身。

此处的 Apache 文档声称可以发送非 html 内容,但没有给出如何实现此目的的示例。

我的项目中也有许多 PHP 文件(在/htdocs中),它们做完全相同的事情(输出 JSON 响应,通过外部 AJAX 请求访问)但是,除了在脚本中简单地输出 JSON header 之外,它们不需要对服务器接受的任何修改 output 并在没有任何进一步干预的情况下正常工作。

我似乎找不到与强制服务器响应 JSON 数据而不是 CGI 脚本的 HTML 文本相关的任何其他解决方案。

经过一些调查,事实证明这是一个 CORS 问题,与接受的内容类型和调用的事实没有冲突

cgi.test()

仅输出 HTML 标头,无论预期的服务器响应应该是什么。

暂无
暂无

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

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