当前位置: 首页 > 知识库问答 >
问题:

试图理解为什么简单的角2http.get()不工作在localhost

王渊
2023-03-14

试图理解为什么这样一个简单的rest调用api不能从localhost(使用angular cli)工作。

这是服务代码:

commandsUrl ='http://www.mocky.io/v2/...';
  headers = new Headers({ 'Access-Control-Allow-Origin': '*' });
  options = new RequestOptions({ headers: this.headers, withCredentials: true });

  getMyList (): Observable<any> {
    return this.http.get(this.commandsUrl, this.options)
      .map(this.extractData)
      .catch(this.handleError);

  }
  private extractData(res: Response) {
    let body = res.json();
    return body.data || { };
  }
  private handleError (error: Response | any) {
    let errMsg: string;
    if (error instanceof Response) {
      const body = error.json() || '';
      const err = body.error || JSON.stringify(body);
      errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
    } else {
      errMsg = error.message ? error.message : error.toString();
    }
    console.error(errMsg);
    return Observable.throw(errMsg);
  }

浏览器的错误是:

XMLHttpRequest 无法加载 http://www.mocky.io/v2/...对预检请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源”标头。因此,不允许访问源“http://localhost:4200”。

共有1个答案

牛华皓
2023-03-14

你必须阅读CORS的信息。在发送真正的 AJAX 请求之前,将发送 GET、OPTIONS 请求,并且服务器必须使用“访问控制-允许源”标头进行响应,以授予您访问它的权限。

也就是位于' http://www.mocky.io/v2/... '的服务器。必须配置为接受来自服务器的CORS请求(或使用通配符)

https://www.html5rocks.com/en/tutorials/cors/

 类似资料:
  • 我还可以用 我得到一条消息,说测试通过了,但从未显示在屏幕上。为什么不呢?

  • 我正在学习使用stl向量,这是奇怪的,这个程序不能工作。这有什么问题?如果我想用Vector实现同样的功能,应该怎么做呢?

  • 我正在尝试做世界上最简单的事情——自动机中的基本迭代器。工作流程如下: 获取变量的值(最初设置为1) 运行Applescript: 设置变量的值 环 它第一次工作,按预期从1上升到2。但它在第二次通过时失败,给出了错误 无法使{}输入类型号。(-1700) 我不知道为什么——我试着让它作为一个整数从Applescript输出,但没有任何区别。有人能解释一下吗?

  • 我觉得奇怪/违反直觉的是,我们不必像这样指定选择器属性(尽管如果我们这样写,它仍然有效): 相反,我们只需要指定input属性,就可以神奇地得到指令: 我不喜欢这个“快捷方式”/语法糖/魔法,因为它看起来像是绑定到元素的属性,而不是实际发生的事情:我们绑定到属性指令的属性。因此,仅仅通过查看HTML,我们不能很容易地确定属性绑定到哪个元素/组件/指令。 是HTML元素属性还是带有输入属性的属性指令

  • 当我调用下面的代码时,我总是得到 用户的值。Id和密码有效。结果错误总是说“无效令牌”,我没有尽可能地看到它,因为我得到它并立即检查它和它的错误。这只是一个理智测试——我通常通过电子邮件向用户发送令牌,但这也不起作用。 UPDATE 1我在同一个控制器中定义UserManager,如下所示: UPDATE 2这是我的Application ationUserManager代码:

  • 问题内容: 为什么这个独立的代码不起作用: 即使变量中包含https,每次也可以打印。 问题答案: 如有疑问,请阅读文档: [strpos]返回大海捞针中第一次出现针的数字位置。 因此,您想尝试更多类似的方法: 因为否则返回一个数字,并且您正在寻找布尔值。