[英]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.