美文网首页
2019-05-02 跨域

2019-05-02 跨域

作者: E1FANG | 来源:发表于2019-05-02 23:18 被阅读0次

什么是跨域

为什么要跨域
因为浏览器的同源策略,只允许本域下的接口交互

什么是同源策略

浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

怎么才是同源:

1,同协议:如都是HTTP或HTTPS
2,同域名:如 http://jrg.com/ahttp://jrg.com/b
3,同端口:如都是80端口

所以跨域就是绕过同源策略去获取数据。不知道如何定义,老师说是一种现象。

跨域的几种方式:

1,JSONP
2,CORS
3,降域
4,postMessage

JSONP

JSONP是通过script标签加载数据的方式去获取数据 当作js代码去执行,提前在页面上声明一个函数,函数名通过接口传参的方式传给后台,后台解析到函数名后,在原始数据上包裹这个函数名,发送给前端。

JSONP需要后端的配合才可以实现。

后台如何做:

 if(pathObj.query.callback){
        res.end(pathObj.query.callback + '(' + JSON.stringify(news) + ')')
      }else{
        res.end(JSON.stringify(news))
      }

判断是否存在这个函数名,存在的话就包裹函数名发送回去。

前端要提前声明好函数,可在这个函数里面操作数据

  function appendHtml(news){
    var html = '';
    for( var i=0; i<news.length; i++){
      html += '<li>' + news[i] + '</li>';
    }
    console.log(html);
    $('.news').innerHTML = html;
  }

CORS

CORS是一种Ajax跨域请求资源的方式,支持现代浏览器,IE10以上。

如何实现:
当你使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,就会给该请求加一个请求头:orgin,后台经过一系列处理,如果确定接受请求,则会在返回结果中加一个响应头:Access-Control-Allow-Orgin;然后浏览器判断是否包含请求头的orgin,如果有的话,浏览器就会处理响应,就可以获得响应的数据;如果没有,浏览器就会直接驳回,无法拿到数据。

后台如何处理:

res.setHeader('Access-Control-Allow-Origin','http://localhost:8081')
      //res.setHeader('Access-Control-Allow-Origin','*')
      res.end(JSON.stringify(news))

*代表所有人都可以获取数据。
或者你可以在里面写上你的页面的域名。这样就只有你可以拿到数据。

相关文章

  • 2019-05-02 跨域

    什么是跨域 为什么要跨域因为浏览器的同源策略,只允许本域下的接口交互 什么是同源策略 浏览器出于安全方面的考虑,只...

  • 深入跨域问题(3) - 利用 JSONP 解决跨域

    深入跨域问题(1) - 初识 CORS 跨域资源共享;深入跨域问题(2) - 利用 CORS 解决跨域深入跨域问题...

  • 关于设置env等环境变量的思考

    1、如何处理跨域后台处理跨域前端处理跨域浏览器处理跨域 前端本地处理跨域:代理线上跨域的处理方式:Nginx反向代...

  • Web前后端跨域问题处理

    跨域问题有前台跨域(iframe间)和后台跨域。 前台跨域的解决方案可以采用跨域文档通讯(Cross domain...

  • 跨域

    跨域 什么是跨域: 解决跨域 通过jsonp原理:在页面引入跨域js和css时,没有存在跨域问题.因此可以动态创建...

  • 跨域问题详解分析

    参考文档 CORS详解 跨域资源共享 CORS 详解 js中几种实用的跨域方法原理详解 跨域的那些事儿 跨域与跨域...

  • 跨域问题:好几种解决方案

    跨域分为广义跨域和狭义跨域 广义跨域:一个域下的文档或脚本试图去请求另一个域下的资源; 广义跨域可以分为以下几种:...

  • ajax readystatus=0;status=0 报错

    跨域 跨域 跨域 一定要找运维或者后台解决

  • 深入跨域问题(2) - 利用 CORS 解决跨域

    阅读目录: 深入跨域问题(1) - 初识 CORS 跨域资源共享;深入跨域问题(2) - 利用 CORS 解决跨域...

  • 响应头设置跨域和Spring注解跨域

    CORS跨域原理详解Spring解决跨域 响应头设置跨域 Spring注解跨域@CrossOrigin 可添加到方...

网友评论

      本文标题:2019-05-02 跨域

      本文链接:https://www.haomeiwen.com/subject/fzionqtx.html