2016-02-10 3 views
2

Я бы хотел включить CORS в свой WSO2 API Manager для всех конечных точек. Я прошел через документацию (это здорово), и он предлагает изменить файл repository/conf/api-manager.xml, так как в нем находится узел конфигурации CORS (см. Ниже).WSO2 API Manager CORS

<!--Configuration to enable/disable sending CORS headers in the Gateway response 
    and define the Access-Control-Allow-Origin header value.--> 
<CORSConfiguration> 

    <!--Configuration to enable/disable sending CORS headers from the Gateway--> 
    <Enabled>true</Enabled> 

    <!--The value of the Access-Control-Allow-Origin header. Default values are 
     API Store addresses, which is needed for swagger to function.--> 
    <Access-Control-Allow-Origin>*</Access-Control-Allow-Origin> 

    <!--Configure Access-Control-Allow-Methods--> 
    <Access-Control-Allow-Methods>GET,PUT,POST,DELETE,PATCH,OPTIONS</Access-Control-Allow-Methods> 

    <!--Configure Access-Control-Allow-Headers--> 
    <Access-Control-Allow-Headers>authorization,Access-Control-Allow-Origin,Content-Type</Access-Control-Allow-Headers> 

<!--Configure Access-Control-Allow-Credentials--> 
<!-- Specifying this header to true means that the server allows cookies (or other user credentials) to be included on cross-origin requests. 
    It is false by default and if you set it to true then make sure that the Access-Control-Allow-Origin header does not contain the wildcard (*) 
--> 
<Access-Control-Allow-Credentials>true</Access-Control-Allow-Credentials> 

</CORSConfiguration> 

Этот файл, похоже, не применяет эту конфигурацию CORS ко всем конечным точкам. Я получаю правильные заголовки контроля доступа при выполнении запросов к конечным точкам API, которые я опубликовал, но я не получаю их, когда попал в конечные точки маркера (по умолчанию - '/ token', '/ revoke').

Как я могу это достичь?

ответ

7

CORS конфигурации действительны для интерфейсов, созданных с помощью приложения Publisher. Токены apis (- '/ token', '/ revoke') не покрываются из этих конфигураций.

CORS заголовки обрабатываются с помощью обработчика

org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler 

При открытии конфигурации синапсов для АФИ в/хранилище/развертывания/сервера/синапс-конфиги/по умолчанию/API вы найдете этот обработчик.

Вы можете установить этот обработчик в RevokeAPI .xml и TokenAPI .xml, а также. (они находятся в одном месте/репозитории/развертывании/сервере/синапсе-configs/default/api). В конфигурационном файле это будет примерно так:

<handlers> 
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler"> 
    <property name="apiImplementationType" value="ENDPOINT"/> 
    </handler> 
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerCacheExtensionHandler"/> 
    <handler class="org.wso2.carbon.apimgt.gateway.handlers.common.SynapsePropertiesHandler"/> 
</handlers> 
+0

Это ответ - спасибо! У меня недостаточно репутации, чтобы проголосовать за ответ, но я буду делать, когда буду! –

+0

@BenDavis: если он отвечает на ваш вопрос. вы должны принять его как ответ – lakshman

+2

Там мы идем - Stack Overflow n00b здесь! Благодарю. –

2

Конфигурация CORS в api-manager.xml будет применяться только для API-интерфейсов, созданных с помощью диспетчера API. Он не будет применять эти конфигурации для Token API, таких как/token и/revoke.

Связанные с Token API-интерфейсы находятся в каталоге {PRODUCT_HOME}/repository/deployment/server/synapse-configs/default/api.

Вы можете отредактировать _TokenAPI_.xml и добавить заголовки CORS, если вам нужно. Вы можете ссылаться на [1] как на полезный ресурс.

[1] - http://blog.lakmali.com/2013/10/how-to-add-additional-headers-to-wso2.html

+0

Благодарим за быстрый и точный ответ. Я даже не знал об этих файлах! –