Angular http извлекает данные с почтовым запросом

У меня есть резервная копия .net, которая отлично работает. Но когда я собираюсь соединить его с угловым фронтом, у меня возникла эта проблема. Backend все запросы являются почтовыми запросами. Необходимо передать ApiKey в теле каждого запроса. С почтальоном работает отлично.

Ошибка:

Angular http извлекает данные с почтовым запросом

Почтальон:

Angular http извлекает данные с почтовым запросом

resetService.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { map, catchError, tap } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})

export class RestService {

  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/json'
    })
  };
  apiKey = {
    'ApiKey': 'MTIzNDU2Nrg='
  };

  constructor(private http: HttpClient) {
    console.info(this.httpOptions);
  }

  getProductCategories(): Observable<any> {
    return this.http.post<any>('http://restUrl:8029/ShoppingCartApi/GetProductList', this.apiKey, this.httpOptions);
  }

}

мыло.компонент.ц

import { Component, OnInit } from '@angular/core';
import { RestService } from 'src/app/services/rest.service';
import { ActivatedRoute, Router } from '@angular/router';

@Component({
  selector: 'app-soap',
  templateUrl: './soap.component.html',
  styleUrls: ['./soap.component.css']
})
export class SoapComponent implements OnInit {

  products: any = [];

  constructor(public rest: RestService, private route: ActivatedRoute, private router: Router) { }

  ngOnInit() {
    this.getProducts();
  }

  getProducts() {
    this.products = [];
    this.rest.getProductCategories().subscribe((data) => {
      console.info(data);
      this.products = data;
    });
  }

}

Любая помощь приветствуется....

Судя по всему, вам нужно включить CORS на вашем сервере, а также не размещать свои закрытые ключи API в Интернете.

mast3rd3mon 31.01.2019 14:22

Вам нужно включить CORS или, возможно, использовать прокси из angular для использования вашего бэкэнда, вы просто добавляете файл, чтобы указать, как использовать прокси в режиме DEV. Использование прокси-сервера Angular-cli

Paulo Galdo Sandoval 31.01.2019 14:24

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

Danushka herath 31.01.2019 14:24

если вы не можете изменить материал сервера, вы, вероятно, не сможете это сделать, если только вы не сможете каким-то образом обмануть свой сервер, заставив его думать, что источник тот же

mast3rd3mon 31.01.2019 14:27

ок спасибо попробую....

Danushka herath 31.01.2019 14:32

Я ошибаюсь или проблема CORS не должна возникать в запросе OPTIONS? содержит ли запрос на POSTMAN порт 8029?

Nguyen Phong Thien 31.01.2019 14:51

@NguyenPhongThien Проблемы с CORS будут возникать по любому запросу, если CORS не включен и исходный URL-адрес не соответствует серверу.

mast3rd3mon 31.01.2019 15:17
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
7
2 167
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Решением может быть HttpInterceptor, как описано здесь: https://medium.com/@ryanchenkie_40935/angular-authentication-using-the-http-client-and-http-interceptors-2f9d1540eb8

Извините, я понятия не имею, как с этим работать в моем случае,

Danushka herath 31.01.2019 16:42

Судя по почтальону, это может быть связано с тем, что ваш API принимает необработанный контент для передачи apikey. Из angular вы передаете его как объект json.

Пожалуйста, попробуйте передать его как строку, чтобы увидеть, как это работает.

Настройки CORS также необходимо проверить на бэкэнд-API.

Ответ принят как подходящий

вы можете создать файл proxy.conf.json внутри корневой папки и добавить в него этот контент.

{
  "/ShoppingCartApi/*" : {
    "target" : "http://resturl:8029",
    "secure" : "false",
    "logLevel" : "debug",
    "changeOrigin" : true
  }
}

и обслуживать его с помощью ng serve --proxy-config proxy.config.json

Другие вопросы по теме