fetch apiを使って自作のWebサーバーにPOSTリクエストを送ると時間がかかる
Pythonのhttp.serverで下のようにサーバーを実装し、そのサーバーにブラウザからfetch APIを使ってPOSTしようとしているのですがブラウザが応答を待っています
という状態のままになってしまいます。
なぜでしょうか?
ブラウザの開発ツールでネットワークの状況を見てみるとhtmlとjavascriptのファイルはGETできているようなのですがPOSTにとても時間がかかっているようです
python server.py:
import http.server
class MyHandler(http.server.BaseHTTPRequestHandler):
protocol_version = "HTTP/1.1"
def do_POST(self):
# Now this method just print path and content-type.
print("POSTED")
content_type = self.headers["Content-Type"]
print(content_type)
print(self.path)
if "multipart/form-data" in content_type:
raw_data = self.rfile.read()
self.send_response(200, self.responses[200][0])
self.send_header("access-control-allow-origin", "*")
self.end_headers()
# WIP: do something...
def do_GET(self):
if self.path[0] == "/":
self.path = self.path[1:]
try:
with open(self.path, "rb") as f:
file_data = f.read()
except FileNotFoundError:
self.send_response(404, self.responses[404][0])
self.end_headers()
return
print(file_data)
content_length = len(file_data)
self.send_response(200, self.responses[200][0])
self.send_header("content-length", content_length)
self.end_headers()
self.wfile.write(file_data)
def parse_post():
# WIP
pass
httpd = http.server.HTTPServer(("", 6788), MyHandler)
print("Address:", "", "Port:", 6788)
httpd.serve_forever()
js code:
let myheaders = new Headers();
myheaders.append("content-type", "multipart/form-data");
let formdata = new FormData();
formdata.append("Hello", "World");
fetch("http://localhost:6788/nk", {
method: "POST",
mode: "cors",
body: formdata,
header: myheaders
}).then((response)=> response.text()).then((text) => console.log(text));