Угловой 5 вызова API с CORS - PullRequest
0 голосов
/ 09 мая 2018

Здравствуйте, я создаю приложение Angular, которое мне нужно для вызова API. Я столкнулся с ошибкой CORS. «Нет Access-Control-Allow-Origin», о котором я обнаружил несколько вещей в строке, но я до сих пор не понимаю, где я должен добавить middlewhere. Интересно, кто-то может быть конкретным, как заставить это работать с угловым кликом?

Если вы откроете командную строку и наберете ng new test, откройте эту тестовую папку и введите npm start. Вы добавляете код для вызова API, скажем, localhost/someapi/api/people, но, поскольку вы не звоните localhost:4200, вы получаете эту ошибку.

Так что, чтобы мой вопрос был ясен, я понимаю, что вам нужно добавить середину cors, где на сервере. Но вопрос в том, где в приложении angular 5 я могу добавить это для узла, чтобы он мог читать и позволить этому работать?

Ниже приведен код, который я использую для вызова API.

getToken():void{
    let headers = new Headers({'Content-type': 'application/x-www-form-urlencoded'})

    let params = new URLSearchParams();
    params.append('username','some-username');
    params.append('password', 'some-encripted-password');
    params.append('grant_type', 'password');

    let options =  new RequestOptions();
    options.headers = headers;

    this.http
        .post(this.appConfig.baseRoute + 'token',params.toString(), options) 
        .subscribe(result=>{ });
  }

1 Ответ

0 голосов
/ 10 мая 2018

Заголовки CORS должны быть установлены на стороне сервера в соответствии с ответом по предоставленной вами ссылке. На стороне клиента Angular не должно быть ничего, кроме, возможно, токенов аутентификации, если они требуются вашему серверу.

Чтобы облегчить локальную разработку, вы можете настроить прокси для ng serve.

Добавьте этот файл в свой корень (папка с angular-cli.json)

proxy.conf.js

const PROXY_CONFIG = [
  {
      context: [
          // what routes to proxy
          "/api",
      ],
      // your backend api server
      target: "http://localhost:8000",
      secure: false
  }
]

module.exports = PROXY_CONFIG;

вместо вызова ng serve используйте ng serve --proxy-config proxy.conf.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...