#javascript #python #python-3.x #flask #webserver
#javascript #python #python-3.x #flask #веб-сервер
Вопрос:
Я настроил простой сервер flask, используя следующий код:
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route("/")
def helloWorld():
return "Hello, cross-origin-world!"
if __name__ == '__main__':
app.run(host = '0.0.0.0', port='5000')
Из js я отправляю запрос на адрес, используя следующий код
const theUrl="<myip>:5000/";
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false);
xmlHttp.send();
console.log(xmlHttp.response);
Консоль показывает
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>404 Not Found</title> <h1>Not Found</h1> <p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
Когда я пытаюсь получить доступ к тому же URL-адресу из браузера, он возвращает
Hello, cross-origin-world!
Что-то не так, что я делаю с сервером? Я попробовал код js на фиктивном адресе, и я могу получить содержимое этого веб-сайта. Что-то не так с сервером Flask.
Ответ №1:
Просто написал кое-что для загрузки файлов.
Надеюсь, это поможет.
$('.custom-file-input').change(function () {
console.log($(this)[0].files[0].name);
$('.custom-file-label').text($(this)[0].files[0].name);
var formData = new FormData();
formData.append('file', $(this)[0].files[0]);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/', true);
xhr.send(formData)
Я не понимаю, зачем использовать XHR для запросов get, разве вы не могли бы просто использовать Ajax вместо этого?
Последний параметр — является ли соединение асинхронным. Может быть, в этом что-то не так?
Кроме того, не используйте встроенный веб-сервер Flask для производственной среды, он просто не создан для того, чтобы справляться, например, с несколькими пользовательскими тестированиями.
Кроме того, возможно, кто-нибудь может сказать мне, почему нет, однако, я думаю, вам было бы лучше просто указать URL в качестве раздела URL после объявления порта, в моем примере обратите внимание, что я только указываю jquery или js отправлять данные на /
, и это потому, что это означает локальный сервер или интерпретируется как означающий самого себя, поэтому по умолчанию добавляется IP вашего сервера, а в данном случае и порт 5000