angular4跨域请求

angular4和其他框架一样,运用网络请求的时候都会出现跨域的情况(跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制),出现跨域以后怎么解决呢,今天介绍一种angular4-JSONP解决跨越,下面县介绍一下jsonp:

jsonp动态生成sript标签 ,src 指向地址:ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。

进入正题直接看代码,首页在app.module.ts引入:

imports: [
    BrowserModule,
    HttpModule,
    RouterModule.forRoot(routes),
    IonicModule.forRoot(MyApp,{
      tabsHideOnSubPages: 'true' //隐藏全部子页面tabs
    })

  ],

在所需要的面引入http:

 import {Http, ResponseOptions,Headers,HttpModule,URLSearchParams,Jsonp} from "@angular/http";

然后注入:

constructor(public jsonp:Jsonp,public http:Http) {}
带参数的, 注意一定要引入 URLSearchParams,要不请求是失败的: 
 let  d1 = new URLSearchParams();
  d1.set('key',   'value' );
  d1.set('key',   'value' );
  d1.set('key',   ‘value’);
  d1.set('format', 'json');
  d1.set('callback', 'JSONP_CALLBACK');  
 
  this.jsonp.get(url,{
    search: d1
  })
    .subscribe((response) => {
      let res = response.json()

      console.log(res)

    }, (error) => {
      console.error(error);
    });
  下面这两个参数是必须引入的,如果不存在jsonp可以不加2
 1. d1.set('format', 'json');
 2. d1.set('callback', 'JSONP_CALLBACK');
  

今天就介绍到这,谢谢

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言:对于跨域请求,很早之前就有去了解过,但因为一直关注的都是服务器后端开发,故也就仅仅停留在概念的理解上而没有机...
    ken_ljq阅读 90,164评论 6 128
  • 什么是跨域? 2.) 资源嵌入:、、、等dom标签,还有样式中background:url()、@font-fac...
    电影里的梦i阅读 2,444评论 0 5
  • 一、浏览器的同源策略 1.什么是同源? 所谓“同源”指的是”三个相同“。相同的域名、端口和协议,这三个相同的话就视...
    徐国军_plus阅读 918评论 1 3
  • 生活是嘬一碗面条的幸福. 刚刚看完《人间·小团圆》. 生活就像我看电影开心了, 拿起杯子就喝, 以为是水, 咕隆咕...
    玉_82阅读 394评论 0 1
  • ​【导语】世界上每一个销售人员在一开始销售产品的时候都不可能是一帆风顺的,一定会经历一个成长的过程。在成长的过程中...
    笨笨的鱼儿阅读 600评论 0 0

友情链接更多精彩内容