2016-08-09 1 views
3

私は小さなpython htmlサーバーを作成しましたが、外部のCSSとJavaScriptを送信する際に問題が発生しています。 html転送が必要で、インラインCSSが正常に動作します。クロムの開発者ツールはこのエラーで応答:Pythonソケットサーバー上でCSSを送信

Resource interpreted as Stylesheet but transferred with MIME type text/plain: " http://localhost:8888/style.css ".

残念ながら、私は、「MIMEタイプ」は何であるかの知識を持っていません。

# 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() 
+0

私はリクエストに応じて追加情報を提供できます。 – rscarth

+2

以下の回答に加えて、あなたは永続的な接続を持っていないので別のヘッダー: 'Connection:close'を送る必要があります。 – SuperSaiyan

+0

@SuperSaiyan:実際には、この場合、応答はクローズドTCP接続のクローズで閉じられるため、Connectionヘッダーを送信する必要はありません。悪いスタイルだが有効。 –

答えて

2

右200 OKラインの下にあなたの応答文字列に次の行を追加します:何が起こっている

Content-Type: text/css 

はクロームがHTMLにあなたを解釈しようとしていることである。ここ

は、Pythonのコードがありますあなたが望むスタイルシートとして送信されます。しかし、あなたがそれを送るとき、あなたはクロムを伝える内容のヘッダーを送っています。「私はただのテキストです、何も特別なものはありません!だから、クロムは、何かが間違っている、私はスタイルシートを期待していた、あなたが見るエラーをスローするようなものです。 Chromeにスタイルシートを送信していると伝えたら、エラーを解決する必要があります。

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

+0

私が帰宅したら、これをチェックします。応答していただきありがとうございます。 – rscarth

+0

これは、すべてのhtmlコードを "pre"タグに表示します。スクリーンショット:http://puu.sh/qw4mq.png – rscarth

関連する問題