post error in angular 5 В запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin». - PullRequest
0 голосов
/ 06 мая 2018

Я получаю эту ошибку, когда в angular 5 пытаюсь использовать метод отдыха (post):

Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Origin 'http://localhost:4200', следовательно, не разрешен доступ.

Это услуга:

import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {Observable} from 'rxjs/Rx';

@Injectable()
export class ImageProvider{
    public url: string;
    
    constructor( public http: HttpClient){

        this.url='https://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1&tags=?';
    }
    
    getImages(): Observable<any>{
                 
    
            let params = 'format=json&nojsoncallback=1&tags=?';     
                    
            let headers = new HttpHeaders().set('Content-Type','application/x-www-form-urlencoded');
             
            return this.http.post(this.url+'productos', params, {headers: headers});
    }
}

и это компонент

import { Component, OnInit } from '@angular/core';
import {ImageProvider} from '../../services/imageProvider';

@Component({
  selector: 'app-carousel',
  templateUrl: './carousel.component.html',
  styleUrls: ['./carousel.component.css']
})
export class CarouselComponent implements OnInit {
  public responseFlirck
  constructor(private _imageProvider: ImageProvider) { }

  ngOnInit() {
  
    this.getImagesFromFlirk();
  }


  getImagesFromFlirk(){

    this._imageProvider.getImages().subscribe(
      result => {  
        
          this.responseFlirck = result.data;
         
      },
      error => {
          console.log('Error in post');
          console.log(error);
      }
  );
  }

}

Однако в мыльном интерфейсе работает нормально:

enter image description here

Может кто-нибудь исправить мой код?

Большое спасибо!

1 Ответ

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

jonrsharpe прав, вам нужно включить CORS, но если вам нужно очень быстрое временное решение?

Например, вам нужно дать презентацию, вы можете скачать это расширение Chrome. https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=chrome-ntp-icon

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