SpringCloud-Gateway решает междоменные проблемы
SpringCloud-Gateway решает междоменные проблемы

Spring Cloud Gateway — это шлюз микросервисов на основе Spring Framework для создания масштабируемых распределенных систем. При решении междоменных проблем вы можете настроить шлюз для реализации междоменного совместного использования ресурсов (CORS). Чтобы решить междоменные проблемы, сначала необходимо добавить в файл конфигурации шлюза соответствующие междоменные конфигурации, включая домены разрешенного доступа, разрешенные методы HTTP и другую необходимую информацию заголовка. Правильно настроив эти параметры, вы можете обеспечить безопасные и надежные междоменные запросы в микросервисной архитектуре. Использование междоменной конфигурации Spring Cloud Gateway позволяет эффективно управлять связью между различными службами и повысить удобство обслуживания и безопасность системы.


1. Введение в междоменные вопросы

Междоменный:Если доменное имя противоречиво, это означает междоменное。

Междоменные типы:

  • Разные доменные имена: например: www.damon-liu.cn и www.damon-liu.work.
  • Доменное имя такое же, но порты разные: localhost:8080 и localhost8081.

Междоменные проблемы:Браузер запрещает кросс-доменность между инициатором запроса и сервером.ajaxпросить,Запрос перехватывается браузером.

image 67 - SpringCloud-Gateway решает междоменные проблемы
image 67 - SpringCloud-Gateway решает междоменные проблемы

Решение:CORS

CORS (Cross-Origin Resource Sharing) — это механизм выполнения междоменных HTTP-запросов между веб-браузерами и серверами. В веб-разработке политика одинакового происхождения браузера ограничивает взаимодействие документов или сценариев, загруженных из одного источника, с ресурсами из другого источника. CORS позволяет серверу указать, какие источники (домены) имеют доступ к его ресурсам и какие методы HTTP (например, GET, POST) и информация заголовка разрешены.

Добавляя информацию заголовка, связанную с CORS, например Access-Control-Allow-Origin, в заголовок ответа HTTP, сервер может сообщить браузеру, какие источники разрешены. Это позволяет междоменным запросам Ajax и другим междоменным запросам ресурсов быть безопасными и осуществимыми, но при этом подвергаться определенным ограничениям, обеспечивая безопасность веб-приложений. CORS — это стандартизированный способ решения проблем междоменных запросов в современных веб-приложениях.

Шлюз также использует решение CORS для междоменной обработки, и для его реализации требуется лишь простая настройка.


2. Методы решения междоменных задач

1. Создайте глобальный фильтр

Решить междоменные проблемы в Spring Cloud можно путем настройки маршрутизации. Вы можете использовать CorsGlobalFilter для настройки глобальной междоменной поддержки. Вот простой пример:

Сначала в проекте Spring Cloud Gateway создайте глобальный класс фильтра для настройки междоменной поддержки. Например, вы можете создать класс CorsFilter:

Язык кода:java
копировать
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
 
@Configuration
public class CorsFilter {
 
    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public GlobalFilter corsFilter() {
        return (exchange, chain) -> {
            ServerWebExchange.Builder webExchangeBuilder = exchange.mutate();
            webExchangeBuilder
                    .request(exchange.getRequest())
                    .response(exchange.getResponse());
 
            webExchangeBuilder
                    .response(exchange.getResponse()
                            .mutate()
                            .header("Access-Control-Allow-Origin", "*")
                            .header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS")
                            .header("Access-Control-Allow-Headers", "Content-Type")
                            .build());
 
            return chain.filter(webExchangeBuilder.build());
        };
    }
}

Этот фильтр добавляет некоторые часто используемые междоменные заголовки, такие как Access-Control-Allow-Origin, Access-Control-Allow-Methods и Access-Control-Allow-Headers. Вы можете изменить его в соответствии с вашими потребностями.


2. Измените настройки шлюза.

Затем в файле application.yml службы шлюза добавьте следующую конфигурацию, чтобы гарантировать, что запросы OPTIONS разрешены, поскольку при выполнении междоменных запросов браузер может сначала отправить запрос OPTIONS, чтобы проверить, разрешен ли междоменный запрос:

Язык кода:yaml
копировать
spring:
    cloud:
        gateway:
          # 
          globalcors: # Глобальная междоменная обработка
            add-to-simple-url-handler-mapping: true # Решить проблему перехвата запроса опций
            corsConfigurations:
              '[/**]':
                allowedOrigins: # На каких веб-сайтах разрешены междоменные запросы? 
                  - "http://localhost:8090"
                  - "http://localhost:8081"
                allowedMethods: # Разрешенные методы междоменных запросов ajax
                  - "GET"
                  - "POST"
                  - "DELETE"
                  - "PUT"
                  - "OPTIONS"
                allowedHeaders: "*" # Разрешить передачу информации заголовка в запросе существования
                allowCredentials: true # Разрешить ли перенос файлов cookie
                maxAge: 360000 # Срок действия этого междоменного обнаружения

Выше приведена простая конфигурация, мы внесем определенные изменения в соответствии с реальными потребностями. После добавления конфигурации шлюза Spring Cloud Gateway может обрабатывать междоменные запросы.


3. Краткое изложение решения Gateway для междоменных проблем

Являясь ключевым компонентом микросервисной архитектуры, Spring Cloud Gateway эффективно решает междоменные проблемы в распределенных системах, предоставляя гибкие механизмы маршрутизации и фильтрации. Совместное использование ресурсов между источниками (CORS) — распространенная, но сложная проблема при создании масштабируемых распределенных систем, и Spring Cloud Gateway предоставляет разработчикам краткий и мощный способ решения этой проблемы.

Чтобы решить междоменную проблему, сначала необходимо добавить соответствующую междоменную конфигурацию в файл конфигурации Spring Cloud Gateway. Сюда входит указание доменов, к которым разрешен доступ, настройка разрешенных методов HTTP и другая необходимая информация заголовка. Благодаря этим конфигурациям разработчики могут четко указать условия, при которых в системе разрешены междоменные запросы, обеспечивая управляемость и безопасность коммуникаций.

В целом, Spring Cloud Gateway предоставляет разработчикам мощный инструмент для создания эффективных, безопасных и обслуживаемых систем микросервисов благодаря мощному механизму маршрутизации и фильтрации, а также гибкой междоменной конфигурации. Правильно используя эти функции, разработчики могут легче решать междоменные проблемы в распределенных системах и улучшать общее качество и производительность системы. Таким образом, Spring Cloud Gateway стал незаменимой частью современной микросервисной архитектуры.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose