XMLHttpRequest не может сделать запрос к серверу Flask - PullRequest
0 голосов
/ 15 марта 2019

Я установил простой колб-сервер, используя следующий код:

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 Ответ

1 голос
/ 15 марта 2019

Только что написал что-то для загрузки файлов.

Надеюсь, это поможет.

$('.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, не могли бы вы вместо этого просто использовать Ajax?

Последний параметр - является ли соединение асинхронным. Возможно, что не так?

Кроме того, не используйте встроенный веб-сервер Flask для производственной среды, он просто не приспособлен для более чем одного пользовательского тестирования, например.

Кроме того, возможно, кто-то может сказать мне, почему нет, однако, я думаю, вам было бы лучше, если бы в качестве раздела URL-адреса после объявления порта в моем примере было замечено, что я говорю только jquery или js отправлять сообщения данные в /, и это потому, что это означает, что локальный сервер или интерпретируется как сам по себе, так что по умолчанию добавляется IP-адрес вашего сервера и в этом случае порт 5000 также

...