Hi Erico,

According to your API definition, You had define POST only as a Resource in
API. Therefore OPTIONS request which pre-flight request didn't get the
headers set on API. Could you please try following documentation an see if
your issue could get resolves.
[1] - https://docs.wso2.com/display/EI660/Generating+an+API+using+Swagger

On Thu, Mar 19, 2020 at 8:45 AM Érico <[email protected]> wrote:

> Hello
> Please, I am facing an issue with CORS
> My client is an angular 8 app calling an API with the following code:
>
> <api xmlns="http://ws.apache.org/ns/synapse"; name="tenantsApi"
> context="/tenants">
>    <resource methods="GET" uri-template="/tenants">
>       <inSequence>
>          <log level="full"/>
>          <payloadFactory media-type="xml" description="createSOAPBody">
>             <format>
>                <soap:Envelope xmlns:soap="
> http://www.w3.org/2003/05/soap-envelope"; xmlns:ser="
> http://services.mgt.tenant.carbon.wso2.org";>
>                   <soap:Header/>
>                   <soap:Body>
>                      <ser:retrieveTenants/>
>                   </soap:Body>
>                </soap:Envelope>
>             </format>
>             <args/>
>          </payloadFactory>
>          <header name="Action" scope="default"
> value="urn:retrieveTenants"/>
>          <property name="username" value="admin" scope="default"
> type="STRING"/>
>          <property name="password" value="admin" scope="default"
> type="STRING"/>
>          <property name="credentials"
> expression="fn:concat($ctx:username,':',$ctx:password)" scope="default"
> type="STRING"/>
>          <property xmlns:ns="http://org.apache.synapse/xsd";
> name="Authorization" expression="fn:concat('Basic ',
> base64Encode($ctx:credentials))" scope="transport" type="STRING"/>
>          <property name="Access-Control-Allow-Origin" value="*"
> scope="transport" type="STRING"/>
>          <property name="Access-Control-Allow-Credentials" value="true"
> scope="transport" type="STRING"/>
>          <property name="Access-Control-Allow-Methods"
> value="GET,PUT,POST,DELETE,PATCH,OPTIONS" scope="transport" type="STRING"/>
>          <property name="Access-Control-Allow-Headers"
> value="Authorization,Origin,X-Requested-With,Accept,Content-Type"
> scope="transport" type="STRING"/>
>          <call>
>             <endpoint>
>                <address uri="
> https://localhost:9443/services/TenantMgtAdminService.TenantMgtAdminServiceHttpsSoap12Endpoint";
> format="soap11"/>
>             </endpoint>
>          </call>
>           <property name="messageType" value="application/json"
> scope="axis2" type="STRING" description="Set to JSON media type"/>
>           <respond/>
>       </inSequence>
>          <property name="Access-Control-Allow-Origin" value="*"
> scope="transport" type="STRING"/>
>          <property name="Access-Control-Allow-Credentials" value="true"
> scope="transport" type="STRING"/>
>          <property name="Access-Control-Allow-Methods"
> value="GET,PUT,POST,DELETE,PATCH,OPTIONS" scope="transport" type="STRING"/>
>          <property name="Access-Control-Allow-Headers"
> value="Authorization,Origin,X-Requested-With,Accept,Content-Type"
> scope="transport" type="STRING"/>
>       <outSequence/>
>    </resource>
> </api>
>
> In can successfully test the API in Postman
>
> But in my angular app I'm getting the error:
>
> Access to XMLHttpRequest at 'http://localhost:8280/tenants/all' from
> origin 'http://localhost:3000' has been blocked by CORS policy: Response
> to preflight request doesn't pass access control check: No
> 'Access-Control-Allow-Origin' header is present on the requested resource.
>
>
>
>
>
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>


-- 

*Tharindu Dharmarathna*Technical Lead
WSO2 Inc.; http://wso2.com
lean.enterprise.middleware

mobile: *+94779109091*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to