angular - 尝试从 4chan API 获取

标签 angular http cors

我正在尝试向此端点 https://a.4cdn.org/boards.json 发出 GET 请求4chan API https://github.com/4chan/4chan-API .

文档说:

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. 

当我在浏览器中访问此端点时,我得到了 JSON,但是当我在 Angular 应用程序中发出请求时,我得到了以下响应:

headers: Object { normalizedNames: Map(0), lazyUpdate: null, headers: Map(0) }
message: "Http failure response for https://a.4cdn.org/boards.json: 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: "https://a.4cdn.org/boards.json"

这是我的代码:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class BoardsService {

  constructor(private http: HttpClient) { }

  getBoards() {
    this.http.get('https://a.4cdn.org/boards.json').subscribe({
      next: (data) => {
        console.log(data);
      },
      error: (err) => {
        console.log(err);
      },
      complete: () => {
        console.log('complete');
      }
    });
  }
}

有人能够让它工作吗?

我希望我不需要创建一个 API,只需使用另一个 API

最佳答案

您遇到了CORS问题。

本质上,这个 4chan API 不能从浏览器使用,除非从 4chan 上托管的页面完成。解决方法是从服务器获取,因为它不是 Web 浏览器,并且不强制执行 CORS 规则。

您不必自己托管服务器,有大量现有服务旨在规避 CORS(例如,请参阅 cors-anywhere)。请注意,这对于生产代码来说不是一个好主意,例如,有人可能会劫持 CORS 重定向服务器并做坏事。

建议您创建自己的 API,或者托管一些简单的服务器来绕过 CORS(例如 cors-anywhere)。

关于angular - 尝试从 4chan API 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72357579/

相关文章:

c# - Web Api 2 CORS 不适用于 POST

cors - 为什么需要访问控制公开 header ?

angular - 模块 'ValuesPipe' 导入的意外管道 'HomieModule'

javascript - (Angular)在我的情况下如何返回不同的 Observable 类型请求?

Angular 4 - 用户界面路由器

java - 如何从 java.net.HttpClient 请求的响应中获取 http 状态消息

jquery - 更改 Access-Control-Allow-Origin 以允许 Jquery load() 工作

html - Angular Material 垫选项选择值突出显示

php - 使用 PHP 将 Post 数据写入文件

javascript - Angular http 请求将端口 4200 添加到我的每个请求