XMLHttpRequest не может отправить запрос на сервер Flask

#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