Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

http.server - Unsupported method ('POST')

So I have created a website, when the user tries to fill out the login form (username and password), the following error message is displayed:

Error response
Error code: 501

Message: Unsupported method ('POST').

Error code explanation: HTTPStatus.NOT_IMPLEMENTED - Server does not support this operation.

For the server im using Python 3 http.server. To start the server i have a batch file containing the following code:

python -m http.server 80

I'm looking for a way to receive the login credentials the user submitted, and store them in a text file (.txt).

After doing some research I got the impression I need to create a PHP script, i have no idea how to do this. here is my attempt at it:

<?php
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);

echo $username, ' ', $password;
?>

1 Answers

Thank you @MonkeyZeus, I managed to solve the problem by making a few changes to your code.

import socketserver
import http.server
import logging
import cgi

PORT = 80

class ServerHandler(http.server.SimpleHTTPRequestHandler):

    def do_GET(self):
        logging.error(self.headers)
        http.server.SimpleHTTPRequestHandler.do_GET(self)

    def do_POST(self):
        logging.error(self.headers)
        form = cgi.FieldStorage(
            fp=self.rfile,
            headers=self.headers,
            environ={'REQUEST_METHOD':'POST',
                     'CONTENT_TYPE':self.headers['Content-Type'],
                     })
        for item in form.list:
            logging.error(item)
        http.server.SimpleHTTPRequestHandler.do_GET(self)

        with open("data.txt", "w") as file:
            for key in form.keys(): 
                file.write(str(form.getvalue(str(key))) + ",")

Handler = ServerHandler

httpd = socketserver.TCPServer(("", PORT), Handler)

print("serving at port", PORT)
httpd.serve_forever()

When the post request is received, a text file called "data" is created. A for loop is then used to iterate through the keys (source) and write there values to the file.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!