角度无“访问控制允许来源”

时间:2019-09-20 19:36:41

标签: javascript android angular cors

我正在构建一个离子+角度应用程序来列出欧洲百万结果,并且我正尝试通过外部api获取数据,我不想使用服务器,它只是用于列出api结果,但是我得到了cors封锁,我不知道该如何解决,有人可以帮我吗?谢谢

lotteries.service.ts

import { Injectable } from '@angular/core';
import { HttpClientModule, HttpClient } from '@angular/common/http';
import { Euromillions } from './lottery.model';


@Injectable({
    providedIn: 'root'
})
export class LotteriesService {
    private euromillions: Euromillions[] = [
        {
            id: 'r1',
            numbers: '6-14-22-37-45',
            stars: '3-7',
            draw_info: 'Sorteio Nº076, 22-10-2019'
        }
    ];
    constructor(private httpService: HttpClient) { }

    getLastEuromillions() {
        return [...this.euromillions];
    }

    getApi() {

        return this.httpService.get('https://nunofcguerreiro.com/api-euromillions-json');
    }
}

lotteries.page.ts

import { Component, OnInit } from '@angular/core';

import { Euromillions } from './lottery.model';
import { LotteriesService } from './lotteries.service';

@Component({
  selector: 'app-lotteries',
  templateUrl: './lotteries.page.html',
  styleUrls: ['./lotteries.page.scss'],
})
export class LotteriesPage implements OnInit {
  euromillions: Euromillions[];

  constructor(private lotteriesService: LotteriesService) { }

  ngOnInit() {
    this.lotteriesService.getApi().subscribe((data)=>{
      console.log(data);
    }
    )};
}

image error

2 个答案:

答案 0 :(得分:1)

外部浏览器阻止了您的请求。 您有两种选择。 使用后端接收请求并重定向它。 或API所有者允许跨域。 阅读此链接以获取更多详细信息 mozila reference

答案 1 :(得分:0)

AWS的API网关将全天为您解决这一问题。

当您运行HTTP请求时,从后端(使用js / node)调用模块是一种很好的做法,这可以帮助您解决CORS问题。但是为什么要在可以使用AWS的情况下设置服务器/后端。

通过一些额外的步骤,您可以创建一个传递请求的API,然后从浏览器中调用该API,并在该浏览器中向您的页面发送跨域允许的响应。

在这里查看我的其他答案:   How to retrieve cross origin volcanic data in xml?