Bad Content-Type on SugarCRM REST API Interface

Today I discovered a really tedious bug on SugarCRM, one of those bugs that take away precious time and you do not expect. The object of the bug are the REST services of SugarCRM. The version on which I have found the problem is the 6.1 Community Edition, but I think also the other editions (Professional and Enterprise) are affected. The versions of the REST Service are: 2 and 3, for more information see document at http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdition/6.1/-docs-Developer_Guides-Sugar_Developer_Guide_6.1.0-Chapter%202%20Application%20Framework.html#9000259.

Calling a REST service, requiring the response in JSON format, the server responds with an incorrect Content-Type: text/html instead of application/json.

The incorrect value of the Content-Type can cause problems with some frameworks used to consume RESTful JSON services, one of many frameworks is Jersey. See the error returned from Jersey to resulting from the wrong Content-Type.

For more information see the following documents available on the network:

Following is an example of calling the login service via Firefox Browser and Firebug as debugger.

Bad Content-Type SugarCRM REST API Interface

Bad Content-Type SugarCRM REST API Interface

View JSON Response

View JSON Response

The solution is simple: add one line of code to the class SugarRestJSON defined in service/core/REST/SugarRestJSON.php. The line of code sets the correct Content-Type takes to respond to the service (see the method body generateResponse ()).

Following the service responses after applying the Fix.

Content-Type after applying the fix.

Content-Type after applying the fix.

View JSON Response after applying the fix (JSON View Firefox Plugin).

View JSON Response after applying the fix (JSON View Firefox Plugin).

See SugarCRM Bug #43368
For any questions please feel free to leave your comments.

0 Condivisioni

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

Potrebbero interessarti anche...

Cos'è il progetto CIE/CNS Apache Docker - Developers Italia

In questo video https://youtu.be/TcAzn1POhsM introdurrò il progetto CIE/CNS Apache Docker di Developers Italia (https://developers.italia.it/it/cie/#resourcecontent-3) nato circa due anni fa.

L'obiettivo di questo progetto è quello di fornire un template pronto all'uso che realizza un sistema di autenticazione tramite la Smart Card TS-CNS (o CNS) e la CIE (Carta d'Identità Elettronica) basato su Apache HTTP. Ognuno può poi modificare o specializzare questo progetto sulla base delle proprie esigenze Si tratta di un progetto docker per la creazione di un container che implementa un sistema di mutua autenticazione o autenticazione bilaterale SSL/TLS.

Questo meccanismo di autenticazione richiede anche il certificato digitale da parte del client, certificato che in questo caso risiede all'interno della TS-CNS o della CIE. La particolarità del sistema implementato (attraverso questo container) è quella di consentire l'autenticazione tramite:

  • La TS-CNS (Tessera Sanitaria - Carta Nazionale Servizi), rilasciata dalla regione di appartenenza;
  • La CIE (Carta d'Identità Elettronica), rilasciata dal comune di residenza.

Nella versione 2.0.0 il progetto è stato aggiornato per essere uniforme alle linee guida di Bootstrap Italia. A seguire alcune risorse che possono essere utili.

  • Cos’è il progetto CIE/CNS Apache Docker (http://bit.ly/3aJ5Gbl)
  • CIE Carta d'Identità Elettronica (https://developers.italia.it/it/cie/)
  • Carta Nazionale dei Servizi (https://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi)
  • Raspberry Pi – Un esempio di applicazione della TS-CNS (https://bit.ly/3hkJ8Aj)
  • Pubblicare il servizio CIE/CNS Apache Docker su Azure Cloud (http://bit.ly/3aPoq8V)
  • Come accedere al portale VETINFO tramite TS-CNS e Mac OS (http://bit.ly/2VFMKq7)