@yann1nnn

Почему возникает ошибка при отправке запроса?

fetch('https://185.105.88.12:5000/save_user', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        id: userId,
                        username: userName
                    })
                })


(failed) net::ERR_TUNNEL_CONNECTION_FAILED
strict-origin-when-cross-origin

import this

from flask import Flask, request, jsonify
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
import os

# Инициализация приложения Flask
app = Flask(__name__)

# Разрешение CORS
CORS(app)

# Конфигурация базы данных SQLite
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'users.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# Инициализация базы данных
db = SQLAlchemy(app)

# Модель базы данных для пользователей
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    telegram_id = db.Column(db.String(80), unique=True, nullable=False)
    username = db.Column(db.String(80), nullable=False)

    def __init__(self, telegram_id, username):
        self.telegram_id = telegram_id
        this.username = username

# Создание базы данных (если не существует)
with app.app_context():
    db.create_all()

# Маршрут для получения и сохранения данных
@app.route('/save_user', methods=['POST'])
def save_user():
    try:
        # Получаем данные из запроса
        data = request.get_json()
        telegram_id = data.get('id')
        username = data.get('username')

        # Проверяем, есть ли уже такой пользователь
        existing_user = User.query.filter_by(telegram_id=telegram_id).first()

        if existing_user:
            return jsonify({"message": "User already exists"}), 200

        # Сохраняем нового пользователя в базе данных
        new_user = User(telegram_id=telegram_id, username=username)
        db.session.add(new_user)
        db.session.commit()

        return jsonify({"message": "User saved successfully"}), 201
    except Exception as e:
        return jsonify({"error": str(e)}), 500

# Запуск сервера с SSL
if __name__ == '__main__':
    # Путь к файлам сертификата и ключа
    ssl_context = ('server.crt', 'server.key')  # Замените на ваши пути

    app.run(host='0.0.0.0', port=5000, ssl_context=ssl_context)


66e297ee935a2151132021.png66e297f3c10f4283258860.png
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
Eugene198956
@Eugene198956
где я???
Ошибка ERR_TUNNEL_CONNECTION_FAILED обычно связана с проблемами сетевого соединения, такими как:

- Проблемы с прокси-сервером: Если вы используете прокси-сервер, он может блокировать соединение. Убедитесь, что настройки прокси корректны или попробуйте отключить прокси, чтобы проверить, решает ли это проблему.
- SSL-сертификаты: Поскольку вы используете HTTPS, убедитесь, что SSL-сертификаты корректно настроены. Проверьте, что файлы server.crt и server.key существуют и правильно указаны в вашем коде. Если сертификаты самоподписанные, браузер может блокировать соединение из-за недоверия к сертификату.
- CORS (Cross-Origin Resource Sharing): Хотя вы используете CORS(app) в вашем Flask приложении, убедитесь, что ваш сервер правильно настроен для обработки CORS-запросов. Это может быть причиной ошибки, если запросы блокируются политикой безопасности браузера.
- Сетевые настройки: Проверьте, нет ли проблем с сетевыми настройками, такими как брандмауэр или антивирусное ПО, которые могут блокировать соединение.
- IP-адрес и порт: Убедитесь, что вы правильно указываете IP-адрес и порт в вашем fetch запросе. Проверьте, что сервер действительно слушает на 185.105.88.12:5000 и что этот адрес доступен из вашей сети.

Попробуйте выполнить следующие шаги для диагностики и устранения проблемы:

- Проверьте, можете ли вы получить доступ к серверу напрямую через браузер или с помощью инструмента, такого как curl, чтобы убедиться, что сервер доступен.
- Убедитесь, что ваш сервер Flask запущен и слушает на правильном IP-адресе и порту.
- Если вы используете самоподписанный сертификат, попробуйте временно отключить проверку SSL в вашем fetch запросе для тестирования (хотя это не рекомендуется для использования на проде).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы