Angular 2 Не удалось выполнить open на XMLHttpRequest: неверный URL-адрес

Я пытаюсь вызвать службу, она работает в DHC, но когда я пытаюсь позвонить в мой проект angular 2, он разбивается, запрос метода POST, получает объект от тела, у которого есть письмо и пароль, а ответ - это токен, который я буду использовать во всем проекте для авторизации.

Вот мой код.

import { Injectable } from '@angular/core';
import { Http, Response, Headers, Request ,RequestOptions ,RequestMethod } from '@angular/http';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';

@Injectable()
export class LoginService {
      constructor(private http:Http) { 
      }

  getToken(){
    var baseUrl = "xxx.xxx.x.xxx:xxxx/project/v1/admin/login";
    var headers = new Headers();
    headers.append("Content-Type", 'application/json');
    var options = new RequestOptions({ headers: headers });
    var objeto = {'email': 'xxxxxx', 'pass':'xxxx' } 
    var body2 = JSON.stringify(objeto);
    var xhr = new XMLHttpRequest();
    return this.http
       .post(baseUrl, body2, options)
       .map((response: Response) => response.json())
       .subscribe(
           data => console.log('Success uploading the opinion '+ data, data),
           error => console.error(`Error: ${error}`)
       );
  }
}

Я пытаюсь выполнить запрос запроса XMLHttp от angular 2, но ошибка такая же, я не знаю, могу ли я использовать ее в angular 2, вот метод

return Observable.fromPromise(new Promise((resolve, reject) => {
  //  let formData: any = new FormData();     
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                resolve(JSON.parse(xhr.response));
            } else {
                reject(xhr.response);
            }
        }
    }
    xhr.open("POST", baseUrl, true);
    xhr.send(body2);
}));

Справка: (и спасибо

Ответ 1

Если это тип текста 192.168.., вы должны добавить перед ним http:// или https://. Возможно, вам придется включить опции CORS на стороне сервера.

Ответ 2

В моем случае я смог решить эту проблему, установив URL-адрес моего http-запроса с клиентской стороны, а не на serveride, как упоминалось в echonax из http:// из localhost.

Моя проблема была в моем запросе this.http.get(this.domain + '/api/prod/' + id).map(res => res.json())

Мне не хватало / с лицевой стороны api. Это должно быть /api

Ответ 3

если вы используете localhost, используйте только http://перед вашим локальным хостом

Ответ 4

Возможные сценарии:

  1. Ваш формат API неверный, это должно быть, например: http: localhost: 8080/

  2. В вашем API у вас не включен CORS, поэтому он не принимает ваши запросы

  3. У вас нет символа / в конце, в моем случае у меня был http: localhost: 8080, и я не работал из-за отсутствия / в конце

  4. Вы используете http вместо https или наоборот

  5. Вы неправильно создаете запрос ваших учетных данных в API, это может быть вызвано ошибками в коде запроса из части веб-интерфейса (angular, реагировать,...)