JS跨域

作者: 放风筝的小小马 | 来源:发表于2017-06-21 20:21 被阅读0次

同源策略

浏览器出于安全考虑,只允许本域下的接口交互;不同源的客户端脚本,在没有明确授权的前提下,不允许读写对方资源
注意:是浏览器会阻止跨域访问,并不是服务器端不响应请求

本域指的是?

例如:

什么叫跨域?以及跨域的几种实现方法?

跨域就是指不同域的接口相互访问
实现方法:

  • jsonp
    原理:利用script标签的开发策略(也就是不受同源策略的限制),网页可以得到从其他来源动态产生的json数据,而这种使用模式就是jsonp;利用jsonp抓取的并不是json数据,而是JavaScript,用JavaScript解释器运行
  • CORS
    cross-origin resource sharing(跨域资源共享)
    原理:前端用XMLHttpRequest发送请求进行跨域访问时,浏览器检测到是跨域,会在请求头里添加“origin”,后端回复数据时添加头信息:"Access-Control-Allow-Origin",浏览器检测接收的信息中是否包含"Access-Control-Allow-Origin",有则处理响应,没有则抛出XMLHttpRequest异常;
  • 降域
    当两个页面都使用同一个基础域名,并且使用相同的协议、端口,可以使用降域来实现跨域访问
    如:
页面A的URL: http://a.smallmage.com/a.html
页面B的URL: http://b.smallmage.com/a.html
设置它们两个页面的:window.domain = "smallmage.com"

这样两个网页就可以通信了

  • 使用HTML5的postmessage(适用于两个iframe或两个页面之间)
    • window.postMessage方法是HTML5引进的新特性
    • 可以使用它向其他页面发送数据,无论是否同源

postMessage调用语法如下:
otherWindow.postMessage(message, targetOrigin, [transfer]);
postMessage的接收语法如下
window.addEventListener('message', onmessage, false);
代码示例:

$('.main input').addEventListener('input', function(){
    console.log(this.value);
    window.frames[0].postMessage(this.value,'*');
})
window.addEventListener('message',function(e) {
        $('.main input').value = e.data
    console.log(e.data);
});

相关文章

  • 跨域

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

  • 跨域问题详解分析

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

  • 2021-02-23

    一、什么是跨域 二、vue.config.js 跨域配置

  • HTML-获取iframe元素的正确方法

    跨域相关文章详解js跨域问题JavaScript跨域总结与解决办法 解释最清楚的jsonpWhat is JSON...

  • JSONP、CORS、跨域

    跨域 同源:两个文档同源需满足:协议、域名、端口相同跨域:不同域之间相互请求资源,就算作“跨域“。js进行DOM操...

  • 怎么能学好Web前端开发,如何去解决JS跨域问题

    如何去解决JS跨域问题?怎么能学好Web前端开发?JavaScript跨域是指通过JS在不同的域之间进行数据传输或...

  • 如何去解决JS跨域问题 怎么能学好Web前端开发

    如何去解决JS跨域问题?怎么能学好Web前端开发?JavaScript跨域是指通过JS在不同的域之间进行数据传输或...

  • 关于js中的跨域

    @(JS技巧)[跨域] 各种跨域方法详解 总是在听说跨域,可是自己除了JSON,其它的方法其实并不是真的理解。今晚...

  • vue 跨域的配置

    关于跨域的配置真是累呀 在网上找了资料 才成功实现跨域了 其实主要在vue.config.js 来配置跨域

  • 3.跨域

    什么是跨域? js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过...

网友评论

      本文标题:JS跨域

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