通过python套接字服务器发送css

时间:2016-08-09 23:01:56

标签: python html sockets

我创建了一个小的python html服务器,但是我在发送外部css和javascript时遇到问题。 html传输应该和内联css工作正常。 chrome开发人员工具会响应此错误:

  

资源解释为样式表但使用MIME类型传输   text / plain:“http://localhost:8888/style.css”。

不幸的是,我不知道“MIME类型”是什么。

这是python代码:

# server.py
import socket

file = open('website/index.html', 'r')

def start_server(HOST, PORT):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    s.listen(1)

    print('Serving HTTP on port %s ...' % PORT)
    while True:
        client_connection, client_address = s.accept()
        request = client_connection.recv(1024)
        print(request.decode('utf-8'))

        http_response = """\
http/1.1 200 OK

""" + file.read() + """
"""
        client_connection.sendall(bytes(http_response, 'utf-8'))
        client_connection.close()

1 个答案:

答案 0 :(得分:2)

将此行添加到200 OK行正下方的响应字符串中:

Content-Type: text/css

正在发生的事情是Chrome正在尝试将您发送的HTML解释为您想要的样式表。但是,当你发送它时,你发送的内容标题是告诉chrome“我只是纯文本,这里没什么特别的!”所以Chrome就像,有点错误,我期待一个样式表,并抛出你看到的错误。如果您告诉Chrome您要向其发送样式表,则应该解决错误。

This is from Mozilla rather than Chrome, but it gives a good overview of MIME types.