Postman Work and jQuery Dont
Publicado: Sab Ago 07, 2021 12:08 am
Hola, buenos tardes.
Mi problema fue que intentando probar un API mio, desde postman a mi servidor ( Xbase++ y xb2net ), trabajaba excelente, pero cuando ya se puso en la pagina
usando Laravel, mi webserver no le llegaba bien, y de plano regresaba errores de tipo CORS.
Pero un poquito de transfondo.
Tengo un webserver corriendo ( En vez de apache), este webserver me permite al igual que modharbour, correr programs como por ejemplo ( http://localhost/facturaticket.prg)
Para probar mi escript, estaba usando Postman y en postman enviaba los datos a mi webserver como POST, y los datos los ponia en el BODY con formato json.
Ya dentro webserver, el contenido me llega bien, el POST bien, el uri, bien, todo bonito, y dentro de mi Script pues igual, todo bien y bonito.
El problema surgio cuando probamos mi script usando laravel y nada, luego usamos jQuery ...., algo asi ... y nada.
$.ajax({
type: "POST",
url: 'http://10.1.7.3:8080/prg/facturaticket.prg',
dataType: 'json',
data: JSON.stringify({
"rfc": "RAOS730225U80",
"nombre": "OSVALDO RAMIREZ",
"sucursal": 1,}),
success: function(result) { alert("good!") },
error: function(jqXHR, textStatus, errorThrown) { alert(textStatus) }
});
Y cuando se ejecutaba, pues no me llegaba bien el contenido del BODY, yo lo esperaba como string o json pero no, .... me llegaba como un FORM
Y es que jQuery tiene un metodo llamado 'contentType' que si no se especifica, por default tiene de valor de "application / x-www-form-urlencoded"
por lo tanto en mi script prg, cuando me llegaba, no me llegaba com string/json, me llegaba como un FORM y no sabia porque rayos en Postman me funcionaba
bien y en jQuery no.
Asi que mi solucion fue que en mi script prg, tengo que validar como me llega el contenido del BODY, si como FORM o como string, y actuar dependiendo de esto.
Ahora, tambien empeze a jugar cambiando el contentType en el jQuery, pero si lo cambio, el jQuery me envia primero OPTIONS y luego el POST y ya con esto, pues
me perdi mas.
Por lo pronto, asi solucione mi problema; Y como dato: Si alguien se va a conectar a nuestros sitios, debemos saber con que framework se va a conectar para saber
que valores vienen en la cabezeras y poder hacer bien nuestros API'.
Quedo para cualquier comentario y aclaro soy novato, asi que debe haber otras cosas mejores.
Saludos
Osvaldo Ramirez
Mi problema fue que intentando probar un API mio, desde postman a mi servidor ( Xbase++ y xb2net ), trabajaba excelente, pero cuando ya se puso en la pagina
usando Laravel, mi webserver no le llegaba bien, y de plano regresaba errores de tipo CORS.
Pero un poquito de transfondo.
Tengo un webserver corriendo ( En vez de apache), este webserver me permite al igual que modharbour, correr programs como por ejemplo ( http://localhost/facturaticket.prg)
Para probar mi escript, estaba usando Postman y en postman enviaba los datos a mi webserver como POST, y los datos los ponia en el BODY con formato json.
Ya dentro webserver, el contenido me llega bien, el POST bien, el uri, bien, todo bonito, y dentro de mi Script pues igual, todo bien y bonito.
El problema surgio cuando probamos mi script usando laravel y nada, luego usamos jQuery ...., algo asi ... y nada.
$.ajax({
type: "POST",
url: 'http://10.1.7.3:8080/prg/facturaticket.prg',
dataType: 'json',
data: JSON.stringify({
"rfc": "RAOS730225U80",
"nombre": "OSVALDO RAMIREZ",
"sucursal": 1,}),
success: function(result) { alert("good!") },
error: function(jqXHR, textStatus, errorThrown) { alert(textStatus) }
});
Y cuando se ejecutaba, pues no me llegaba bien el contenido del BODY, yo lo esperaba como string o json pero no, .... me llegaba como un FORM
Y es que jQuery tiene un metodo llamado 'contentType' que si no se especifica, por default tiene de valor de "application / x-www-form-urlencoded"
por lo tanto en mi script prg, cuando me llegaba, no me llegaba com string/json, me llegaba como un FORM y no sabia porque rayos en Postman me funcionaba
bien y en jQuery no.
Asi que mi solucion fue que en mi script prg, tengo que validar como me llega el contenido del BODY, si como FORM o como string, y actuar dependiendo de esto.
Ahora, tambien empeze a jugar cambiando el contentType en el jQuery, pero si lo cambio, el jQuery me envia primero OPTIONS y luego el POST y ya con esto, pues
me perdi mas.
Por lo pronto, asi solucione mi problema; Y como dato: Si alguien se va a conectar a nuestros sitios, debemos saber con que framework se va a conectar para saber
que valores vienen en la cabezeras y poder hacer bien nuestros API'.
Quedo para cualquier comentario y aclaro soy novato, asi que debe haber otras cosas mejores.
Saludos
Osvaldo Ramirez