angular4使用httpclient时解决跨域问题

跨域问题的环境:

在本地开发时,使用命令行ng s开启服务,访问地址为http://localhost:4200

假设调用数据接口的服务地址为http://localhost:8088/api/data.action

解决跨域问题的方法:

在angular4项目根目录下创建文件proxy.config.json,文件内容为:

{
  "/api":{
    "target":"http://localhost:8088"
  }
}

那么使用命令行 ng s --proxy-config proxy.config.json重新开启服务后,就把接口服务代理过来了,就可以使用

http://localhost:4200/api/data.action来请求接口服务了,那么问题就迎刃而解了,因为现在不跨域了。

网上很多人问为啥用这种办法还是解决不了,那是因为开启服务的方法不对,要加参数,注意我上面标红的地方。

使用httpclient请求数据的相关代码:

hero.service.ts

import { Injectable } from ‘@angular/core‘;

import { Observable, of } from ‘rxjs‘;
import { HttpClient, HttpHeaders } from ‘@angular/common/http‘;

import { Hero } from ‘../data/hero‘;

@Injectable({
  providedIn: ‘root‘
})
export class HeroService {

  constructor(private http: HttpClient) { }

    getHeroes(): Observable<Hero[]> {
         return this.http.get<Hero[]>("/api/data.action");
  }
}

我给的代码并不完整,这些并不重要,只看标红的部分就够了,这个示例是根据官方的例子改的。

原文地址:https://www.cnblogs.com/modou/p/9426626.html

时间: 2024-10-27 08:24:06

angular4使用httpclient时解决跨域问题的相关文章

thinkphp 在接口开发或者接入三方时解决跨域

估计你们都会了,就不解释了,直接上代码把 解决方案: header('Access-Control-Allow-Origin: *'); //*代表允许所有的网址请求当前接口,当然你也可以把*改成具体的网址,例如www.baidu.com header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"); header('Access-Control-Allow-Methods:

用jQuery与JSONP轻松解决跨域访问的问题

时间过得好快,又被拉回js战场时, 跨域问题这个伤疤又开疼了. 好在,有jquery帮忙,跨域问题似乎没那么难缠了.这次也借此机会对跨域问题来给刨根问底,结合实际的开发项目,查阅了相关资料,算是解决了跨域问题..有必要记下来备忘. 跨域的安全限制都是指浏览器端来说的.服务器端是不存在跨域安全限制的,所以通过本机服务器端通过类似httpclient方式完成“跨域访问”的工作,然后在浏览器端用AJAX获取本机服务器端“跨域访问”对应的url.来间接完成跨域访问也是可以的.但很显然开发量比较大,但限制

彻底解决跨域问题

跨域问题,请求时可以访问的,但只是获取不到结果 网站跨域的五种方案 1.使用jsonp解决跨域(不推荐 因为只能支持get请求,不支持post请求) 2.设置响应头允许跨域(可以推荐) 3.使用HttpClient进行转发(不推荐,因为效率低,会发送两次请求) 4.使用Nginx搭建API接口网关(强烈推荐)因为保证域名和端口都一致,以项目区分反向代理到真实的服务器地址. 5.使用Zuul微服务搭建API接口网关(强烈推荐) springCloud 原文地址:https://www.cnblog

JSONP解决跨域问题,防止表单重复提交,防止XSS攻击

一.跨域问题:能够正常请求,但是没有办法获取到响应结果 解决方案一:设置请求头,在请求的资源中设置Access-Control-Allow-Origin请求头 //3.设置请求头 response.setHeader("Access-Control-Allow-Origin", "*"); 二.JSONP解决跨域问题 普通的跨域访问问题,浏览器会进行拦截,凡是src属性的都不会拦截 ajax:http://www.a.com:8080/a/AServlet JSON

前端解决跨域问题的8种方案(最新最全)

原文:http://www.cnblogs.com/JChen666/p/3399951.html 1.同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.jshttp://www.a.com/b.js 同一域名,不同端

前端解决跨域问题的8种方案(最新最全)(转)

1.同源策略如下: URL说明是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js同一域名下允许 http://www.a.com/lab/a.jshttp://www.a.com/script/b.js同一域名下不同文件夹允许 http://www.a.com:8000/a.jshttp://www.a.com/b.js同一域名,不同端口不允许 http://www.a.com/a.jshttps://www.a.com/b.js同一域名,不同协议

HTML5解决跨域问题

HTML5解决跨域问题 由于浏览器的同源策略,网络连接的跨域访问是不被允许的,XHR对象不能直接与非同源的网站处理数据交互.而同源指的是什么呢?同源的范畴包括:规则(协议),主机号(域名.ip等),端口号. 但是随着开放,共享平台的流行,跨域访问的需求愈加强烈.目前最常用的跨域方案是动态加入script标签,这多少有点hack的意味,跨域访问似乎一直没有什么安全且光明正大的办法. 终于,HTML5提供的XMLHttpRequest Level2实现了跨域访问以及其他的一些新功能.下面我们会详细讨

前端开发如何独立解决跨域问题

背景 跨域是由浏览器同源策略引起的,是指页面请求的接口地址,必须与页面url地址处于同域上(即域名,端口,协议相同).这是为了防止某域名下的接口被其他域名下的网页非法调用,是浏览器对JavaScript施加的安全限制. 这个措施出发点是好的,但在项目开发的过程中,常常给前端开发者带来麻烦. 由于页面开发中,静态资源是放在本地电脑上的,访问这些资源通常通过IP方式(127.0.0.1)或者localhosts来访问,与线上服务器所在域名不符,不能顺利进行接口调用. 解决跨域问题常用的解决方案有两个

解决跨域访问

解决跨域访问的方法 1.用响应头 response.setHeader("Access-Control-Allow-Origin","*");//允许哪些服务器访问 response.setHeader("Access-Control-Allow-Methods","GET POST");//允许的提交方式 2.使用代理 3.JSONP 原理:通过JavaScript标签来访问服务器,并接受服务器返回的数据来实现跨域访问 js