Integración
de cliente jQuery ó Java Script con un servicio Rest publicado usando Mule ESB
como server.
En esta integración
todos se encontraran con problemas de CORS (Cross-Origin Resource Sharing), basicamente se
dan cuando se llama desde Java script a recursos rest en dominios y contextos distintos.
Es decir, la aplicación cliente tiene la siguiente url:www.domainclient.com/appclient y
el servidor publica servicios en www.domainserver.com/appserver.
Error generado:
Solucion
App Cliente:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jQuery.ajax ({ | |
url: "http://domainserver:9102/appserver/service/rest/xxxx", | |
type: "POST", | |
data: json_text, | |
dataType: "json", | |
success: function (data) { | |
alert(data); | |
}, | |
failure: function (errMsg) { | |
alert(errMsg); | |
} | |
}); |
Mule App Server:
Agregar como header en el response: Access-Control-Allow-Origin, Access-Control-Allow-Headers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<flow name="flowServiceRest"> | |
<http:inbound-endpoint exchange-pattern="request-response" host="${ws.host}" port="${ws.port}" doc:name="HTTP" contentType="application/json" /> | |
<scripting:component doc:name="Get Stream - FileName"> | |
<scripting:script engine="Groovy"> | |
<scripting:text><![CDATA[ | |
message.setProperty('Content-Type','application/json',org.mule.api.transport.PropertyScope.INBOUND); | |
return message.payload; | |
]]></scripting:text> | |
</scripting:script> | |
</scripting:component> | |
. | |
. Your Code | |
. | |
<http:response-builder status="200" contentType="application/json" doc:name="HTTP Response Builder" > | |
<http:header name="Access-Control-Allow-Origin" value="*"/> | |
<http:header name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept"/> | |
</http:response-builder> | |
</flow> |
Comentarios
Publicar un comentario