Error al hacer una peticion post en angular usando application/json – angularjs ionic azure

Pregunta:


Anteriormente realizaba una petición usando lo siguiente en los Headers

'Content-Type': 'application/x-www-form-urlencoded'

Pero ahora la API me pide que debo enviarlo de la siguiente forma:

'Content-Type': 'application/json'

La función que realiza la petición es la siguiente:

function Autenticacion(datos) {

    var url = 'http://url'; 

    return $http.post(url, $httpParamSerializer(datos), {
        headers: {
            'Content-Type': 'application/json'
        }
    });

};

Lo cual me arroja el siguiente error

Error

OPTIONS http://API_URL 405 (Method Not Allowed)

 XMLHttpRequest cannot load http://API_URL. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.1.9:8100' is therefore not allowed access. The response had HTTP status code 405.

Pero cuando utilizo una herramienta, en mi caso ARC (Advance Rest Client) funciona. Lo cual se puede constatar en la imagen

enlace de la imagen de ARC

La API esta alojada en un servidor Azure.

Preguntado por: Pedro Miguel Pimienta Morales

Es un problema de CORS como te han comentado.

Si bien la solución es “tocar” el backend para que se solvente, también puedes probar con una extensión para el navegador (A mi me ha funcionado en algunos casos solo).

En Chrome por ejemplo utilizo: Allow-Control-Origin

Y lo tengo configurado de forma que en Intercepted URLs or URL patterns tengo añadido el valor: *:// *

Puedes probar a ver si con eso te soluciona al menos para salir del paso hasta que te digan como modificar correctamente la parte back.

A ver hermano, intenta lo siguiente:

var url = 'http://url'; 

var parametros = JSON.stringify({username:user_email, password:user_password});    

return $http.post(url, parametros, {
        headers: {
            'Content-Type': 'application/json; charset=utf-8'
        }
    });

Buena suerte 😀

Este es un problema de CORS (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS).
Resumiendo, cuando realizas una llamada Ajax desde el navegador, el navegador primero realiza una petición OPTIONS, para negociar con el servidor si la petición se puede hacer. Cuando el origen y el destino son el mismo servidor, no hay problema, pero cuando son diferentes, el servidor debe permitir dicho origen para realizar la petición.

Cuando el servidor contesta, la cabecera Access-Control-Allow-Origin debe contener tu IP (o la ip de la aplicación de angularjs).

Para este caso, debes configurar tu servidor (donde tienes expuestos los servicios REST) para que en la cabecera Access-Control-Allow-Origin tenga algo como eso Access-Control-Allow-Origin=”*”. Por lo menos así lo he hecho en java.

Saludos

Fuente

Related Posts:

Problemas con petición ajax en angularjs – angularjs json
Pregunta: Hola estoy en un proyecto y necesito mostrar los datos consumidos en la vista final. Lo estoy haciendo es mediante POST de la siguiente ...
Tomcat no encuentra los recursos – java angularjs http
Pregunta: Bueno tengo una aplicación con AngularJS que hace peticiones al API de gitHub como un ejemplo para aprender a usar AngularJS, pero el problema ...
¿Cómo mostrar cualquier contenido HTML con ng-bind-html y $sce? – javascript angularjs json
Pregunta: El contenido HTML de mi página está compuesto por archivos JSON, todas las etiquetas se muestran correctamente, como las <h1>, <p>, <img>, etc... Pero ...
como parsear datos angularjs – angularjs post
Pregunta: resulta que hago esta peticion en el controllers a mi php: $http({ method: 'POST', url: 'http://localhost/nPanelarencion/app/php/consulta.php', headers: { ...
Usar controlador sin $scope – javascript angularjs angularjs-scope
Pregunta: angular.module('App') .config(function ($stateProvider) { $stateProvider ...
Como obtener una respuesta usando ngResource – javascript angularjs
Pregunta: Tengo un controller con el que pude (por fin), guardar un registro en mi base de datos, que es este: function PuestoAddController(puestosService, puesto){ ...
pasar variable de html a controlador en angularjs – angularjs
Pregunta: Holaa todos se me presento un nuevo desafio y necesito ayuda de ustedes, resulta que necesito mandar un dato al controlador para poder usarlo: <div ...
Persistencia de datos en AngularJS – javascript angularjs
Pregunta: Tengo montada una app, la cual esta estructurada de la siguiente manera: Menú - Sección 1 - Sección 2 - Sección 3 Cada una de las ...
Convertir base64 imagen en “input file” – javascript php angularjs
Pregunta: Buenos Días, Estoy realizando un aplicativo en angular que recoge un dibujo realizado en canvas para despues subirlo como imagen png al servidor. Esta es mi ...
Inclusión dinámica de ficheros javascript en angular – angularjs ui.router
Pregunta: Buenas tardes, Conforme va avanzando, mi aplicación en angular va teniendo mas y mas ficheros javascript incrustados en el index.html que se carga en todas ...
¿Como llenar un select dinamicamente, AngularJS? – angularjs array object
Pregunta: Ando llenando un select de los departamentos de una empresa de la siguiente forma: $scope.selectize_a_data = { ...
¿Cómo convertir los elementos de un array en objetos a partir de sus valores? – javascript angularjs
Pregunta: Teniendo este array json $scope.ports= ; busco la forma de poder llamarlo así : [ {code:"0001", name:"XXX" }, { code: "0002:, name: "YYY" }, { code:"0003", name: "ZZZ" } ]; Para poder mostrar solamente el nombre del código ...
¿Es posible cambiar el valor de un ng-model mediante un filtro? – javascript angularjs
Pregunta: Estoy elaborando un array , pero quiero cambiar el valor mostrado en la vista según algunas evaluaciones. estaría mostrando los valores así. <div ng-repeat="valor in bonos"> ...
Comentario en bash – ionic bash
Pregunta: Tengo una aplicación Ionic v1, donde tengo algunos hooks para trabajar con gulp. El hook es : #!/bin/bash gulp dev Cuando hago un ionic run android recibo ...

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *