Как настроить CORS в Mule 4 без использования API-менеджера? - PullRequest
0 голосов
/ 13 февраля 2019

Мы пытаемся вызвать службу mule из приложения angular и получаем ошибку CORS.

В нашем проекте возникли проблемы, когда мы добавили перехватчик CORS в http config в global.xml.

<http:listener-config name="api-httpListenerConfig">
    <http:listener-connection host="${http.host}" port="${http.private.port}" />
<http:listener-interceptors>
        <http:cors-interceptor allowCredentials="true">
            <http:origins>
                <http:origin url="*" accessControlMaxAge="0">
                    <http:allowed-methods>
                        <http:method methodName="GET" />
                        <http:method methodName="POST" />
                        <http:method methodName="DELETE" />
                        <http:method methodName="OPTIONS" />
                        <http:method methodName="HEAD" />
                        <http:method methodName="PUT" />
                    </http:allowed-methods>
                     <http:allowed-headers>
                        <http:header headerName="X-Allow-Origin" />
                    </http:allowed-headers>
                </http:origin>
            </http:origins>
        </http:cors-interceptor>
    </http:listener-interceptors> 
</http:listener-config>

Служба GET не должна блокироваться политикой CORS в браузере.

1 Ответ

0 голосов
/ 14 февраля 2019

API-менеджер позволяет исключить логику шлюза (согласование CORS, аутентификация / авторизация, управление трафиком и т. Д.) Из приложения Mule.Но если это внутреннее приложение, которое не имеет преимуществ в API-шлюзе, вот один из способов обработки CORS в приложении Mule:

  1. Реализация метода Options в вашем API.Это должно быть сделано независимо от всех ресурсов, которые будет вызывать или пытаться другой источник (не уверен в возможности, особенно с APIKitRouter на месте), реализуя опции в шаблоне регулярных выражений для обработки для всех ресурсов.
  2. Возвращает заголовок Access-Control-Allow-Origin на слушателе с источниками, которые пытаются получить доступ к запросу.Также добавьте соответствующие заголовки Access-Control-Allow-Methods и Access-Control-Allow-Origins с соответствующими значениями.

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

...