首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firefox中的CGIHTTPRequestHandler和SimpleHTTPRequestHandler

Firefox中的CGIHTTPRequestHandler和SimpleHTTPRequestHandler
EN

Stack Overflow用户
提问于 2020-04-17 06:07:46
回答 1查看 92关注 0票数 0

尝试在Mac Air上的Eclipse中运行python cgi服务器,并在Firefox中显示hello world,有两个问题。下面是要在文件run_server.py中运行的代码

代码语言:javascript
复制
from http.server import HTTPServer
from http.server import CGIHTTPRequestHandler

def run_server(handler_class,server_class=HTTPServer ):
    server_address = ('', 8000)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()

def main():
    run_server(CGIHTTPRequestHandler)

if __name__ == '__main__':
    main()

项目目录下的目录结构

代码语言:javascript
复制
analytics
         \
          run_server.py
cgi-bin
       \
        index.py

index.py

代码语言:javascript
复制
#!/usr/bin/env python 

print('Content-type: text/html;\n\n')
print('<h1>Hello, world!</h1>')

在项目目录中的命令行中,可以使用

代码语言:javascript
复制
$ python -m analytics.run_server

要使用-m选项,请确保analytics目录中有一个__init__.py。现在尝试加载页面

代码语言:javascript
复制
http://localhost:8000/cgi-bin/index.py

在Chrome中,一切都是正常的。那么问题出在哪里呢?在Firefox中,这个url是永远找不到的。同样在Mac上,如果您从Eclipse IDE内部运行服务器,cgi会尝试在安装了python 2 Firefox 404s的操作系统上运行python 3代码,超时,显示一个空白页面,或者如果url问题得到解决,则会尝试保存文件。当存在url问题时,它也不会提供静态内容。Eclipse控制台在运行cgi时,将显示来自python lib site.py print语句的语法错误的堆栈跟踪,从而揭示问题的本质。查看Python 3中的新增功能

代码语言:javascript
复制
Old: print >>sys.stderr, "fatal error"
New: print("fatal error", file=sys.stderr)

在下面的答案部分,对这两个问题的简单解决方案如下所示。

EN

回答 1

Stack Overflow用户

发布于 2020-04-17 06:07:46

添加或创建文件/etc/localhosts,如sudo vi /etc/localhosts或您选择的编辑器。

代码语言:javascript
复制
127.0.0.1 localhost

这修复了两年前的一个已知bug (链接如下),两个月前作为副本关闭,并包含上面的变通方法,非常接近底部。https://bugzilla.mozilla.org/show_bug.cgi?id=1433933有一个5年前打开的活跃bug,更新于6天前,2020年4月10日,看起来非常接近完成。https://bugzilla.mozilla.org/show_bug.cgi?id=1220810无论何时完成,你仍然需要更新火狐。

对于python版本的冲突,从命令行运行服务器在执行cgi时没有任何问题,然而,尝试在index.py中运行服务器不起作用,当shebang path #!(词源锐利的bang,或shell bang)是

#!/usr/bin/env python

在Mac上,它采用默认的python2安装,但正在尝试运行python3代码(假设您已经升级,因为python2已过生命周期)。尽管更新了操作系统,苹果还是保留了Python2的向后兼容性,尽管它的日子屈指可数了。最终,操作系统和应用程序将不再依赖于任何安装了python的操作系统。不确定服务器运行脚本时Eclipse拾取Python2的确切机制,尽管解释器是3。将路径设置为#!/usr/bin/env python3无效,#!/usr/bin/python3也无效。什么能做到?找到python 3的绝对路径并使用它,它甚至应该出现在错误堆栈跟踪中,但这是我的设置中的一个示例。

#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61260847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档