python web服务器如何识别url中没有文件名?

亚历克斯·柯克(Alexa Kirk)

我已经编写了一个非常基本的Python Web服务器,并正在使用Web浏览器对其进行测试。

我可以使用以下方法连接并加载页面:

localhost:8080/index.htm

我也有一个默认的404 Not Foundhtm页面,当输入其他一些单词而不是时会加载页面index.htm

但是,当没有页面键入时,如下所示:localhost:8080我希望为此也加载index.htm,但它无法识别没有文件名的事实。这是我的代码:

essage = connectionSocket.recv(1024)
print("The client request message is: %s" % message)
filename = message.split()[1]
print("filename is %s" % filename[0:])
try:
    if not filename:
        print("not filename")
        filename = "/index.htm"
    f = open(filename[1:])
    outputdata = f.read(1024)
    okmessage = "HTTP/1.1 200 OK"
except OSError:
    print ("There was an OSError")

这是当我在localhost:8080Web浏览器中键入时的输出:(它应该加载index.htm页面)

Got a connection from ('192.168.1.9', 51453)
This request is served by thread 4568
The client request message is: b'GET / HTTP/1.1\r\nHost: 192.168.1.9:8080\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\n\r\n'
filename is b'/'
There was an OSError

localhost:8080/index.htm浏览器中键入时,输出为:

This request is served by thread 4568
The client request message is: b'GET /index.htm HTTP/1.1\r\nHost: 192.168.1.9:8080\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\n\r\n'
filename is b'/index.htm'

我将文件名上的print语句更改为,print("filename is %s" % filename[0:])而不是,print("filename is %s" % filename[1:])现在您可以看到,当没有在浏览器中键入文件名时,它会打印出一个文件名,b'/'因此计算结果为true?

我正在Windows 7机器上运行它。预先感谢您的帮助。

每个@ n9code更新

巴格拉特

问题出在以下代码中:

if filename == '':
        filename = "index.htm"
    f = open(filename[1:])

如果您要求提供一个文件名(如)localhost:8080/filename.html,则会得到filename == '/filename.html',然后使用来访问您的文件名filename[1:]一切都很好,但是当您检测到请求中未提供文件名时,您可以手动为filename变量分配"index.html",然后在filename[1:]获取时"ndex.html"不存在该值

因此,解决您的问题的方法可能是更改代码,如下所示:

if not filename or filename == b'/':
        filename = "/index.htm"
    f = open(filename[1:])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在python中获取Windows短文件名?

来自分类Dev

如何使用python匹配文件中的文件名

来自分类Dev

如何从python记录器获取文件名

来自分类Dev

如何将python变量编码为URL和Web服务器响应?

来自分类Dev

如何匹配不同目录中的文件名?(bash或python)

来自分类Dev

如何从服务器请求中获取文件名?

来自分类Dev

如何在Python中获取当前目录中的所有文件名和文件大小

来自分类Dev

如何使用Python更改目录中的多个文件名

来自分类Dev

如何识别在Python中具有解析错误的文件名?

来自分类Dev

如何在继承的文件的装饰器函数中获取python文件名

来自分类Dev

python中的Web服务器in plainText

来自分类Dev

使用Python Paramiko通过ssh / sftp将文件复制到具有不同文件名的服务器

来自分类Dev

如何导入文件名中带有句点的Python 3模块?

来自分类Dev

有没有办法通过python中的文件类型更改csv文件名?

来自分类Dev

如何在Python中基于文件名运行代码?

来自分类Dev

Python获取列表中的所有文件名

来自分类Dev

如何在python中显示/保存从服务器收到的带有http请求的xlsx文件?

来自分类Dev

如何从Python中文件名列表中的文件名中删除扩展名?

来自分类Dev

如何将python变量编码为URL和Web服务器响应?

来自分类Dev

如何从服务器请求中获取文件名?

来自分类Dev

如何使服务器识别全局文件名

来自分类Dev

如何传递文件名以某种格式在python中列出?

来自分类Dev

如何在Python中从具有完整路径的变量中获取文件名?

来自分类Dev

如何从服务器下载python中的csv文件?

来自分类Dev

Ubuntu Web 服务器,如何在网址中隐藏文件名

来自分类Dev

如何从没有扩展名的路径中获取特定文件名python

来自分类Dev

Python FTP服务器下载文件名中包含特定关键字的最新文件

来自分类Dev

如何从 Flask Web 服务器中运行 Python 程序?

来自分类Dev

如何使用python语言在没有密码的情况下使用SFTP访问服务器

Related 相关文章

  1. 1

    如何在python中获取Windows短文件名?

  2. 2

    如何使用python匹配文件中的文件名

  3. 3

    如何从python记录器获取文件名

  4. 4

    如何将python变量编码为URL和Web服务器响应?

  5. 5

    如何匹配不同目录中的文件名?(bash或python)

  6. 6

    如何从服务器请求中获取文件名?

  7. 7

    如何在Python中获取当前目录中的所有文件名和文件大小

  8. 8

    如何使用Python更改目录中的多个文件名

  9. 9

    如何识别在Python中具有解析错误的文件名?

  10. 10

    如何在继承的文件的装饰器函数中获取python文件名

  11. 11

    python中的Web服务器in plainText

  12. 12

    使用Python Paramiko通过ssh / sftp将文件复制到具有不同文件名的服务器

  13. 13

    如何导入文件名中带有句点的Python 3模块?

  14. 14

    有没有办法通过python中的文件类型更改csv文件名?

  15. 15

    如何在Python中基于文件名运行代码?

  16. 16

    Python获取列表中的所有文件名

  17. 17

    如何在python中显示/保存从服务器收到的带有http请求的xlsx文件?

  18. 18

    如何从Python中文件名列表中的文件名中删除扩展名?

  19. 19

    如何将python变量编码为URL和Web服务器响应?

  20. 20

    如何从服务器请求中获取文件名?

  21. 21

    如何使服务器识别全局文件名

  22. 22

    如何传递文件名以某种格式在python中列出?

  23. 23

    如何在Python中从具有完整路径的变量中获取文件名?

  24. 24

    如何从服务器下载python中的csv文件?

  25. 25

    Ubuntu Web 服务器,如何在网址中隐藏文件名

  26. 26

    如何从没有扩展名的路径中获取特定文件名python

  27. 27

    Python FTP服务器下载文件名中包含特定关键字的最新文件

  28. 28

    如何从 Flask Web 服务器中运行 Python 程序?

  29. 29

    如何使用python语言在没有密码的情况下使用SFTP访问服务器

热门标签

归档