美文网首页
js通信——同源/跨域

js通信——同源/跨域

作者: 希缌婷 | 来源:发表于2020-10-23 14:03 被阅读0次

一、同源策略限制

同源:协议、域名、端口号都相同。
同源策略限制:从一个源加载的文档或脚本与另一个源的资源进行交互。
限制:1.cookie、localstorage、indexDB不能获取;2. ajax请求不能发送;3.DOM无法获得。


二、前后端如何通信

ajax 同源、fetch、webSocket 不限制同源、CORS 支持同源、不同源

三、跨域通信

  1. jsonp
    借助<script>标签可以加载外部资源的实现跨域,只支持get请求。
    实现:
    声明一个全局callback方法,用<script></script>调用外源接口,将callback作为参数返回服务端。
let script = document.createElement('script')
let url = ""
//加上回调方法好拿到数据
script.src = `${url}?callback=cb`
//添加这个脚本到文档里去
document.head.appendChild(script)
function cb(data){
    console.info("jsonp",data)
}
  1. iframe的hash:把数据附属在URL的hash上。
// 在A窗口中:
var B = document.getElementsByTagName('iframe');
B.src = B.src + '#' + 'data';
// 在B(iframe)窗口中:
window.onhashchange = function () {
  var data = window.location.hash;
};
  1. postMessage-结合iframe使用
    // 窗口A(http:A.com)向跨域的窗口B(http:B.com)发送信息
    window.postMessage('data', 'http://B.com');
    // 在窗口B中监听
    window.addEventListener('message', function (event) {
    console.log(event.origin);
    console.log(event.source);
    console.log(event.data);
    }, false);
  2. webSocket-一种特殊的协议,实现客户端和服务端双向通信
var ws = new WebSocket('wss://echo.websocket.org');
ws.onopen = function (evt) {
  console.log('Connection open ...');
  ws.send('Hello WebSockets!');
};
ws.onmessage = function (evt) {
  console.log('Received Message: ', evt.data);
  ws.close();
};
ws.onclose = function (evt) {
  console.log('Connection closed.');
};
  1. CORS--目前最常用
    服务端设置Access-Control-Allow-Origin字段,标识允许请求的来源域。比如Access-Control-Allow-Origin: 'http://foo.com',*表示允许来自任意域的请求。
    设置了源,客户端就可以用ajax请求了。

相关文章

  • 前端基础面试题

    1. 跨域问题 同源:两个文档需满足:协议相同,域名相同,端口相同。跨域通信 :js进行DOM操作、通信时如果目标...

  • 网页请求(同源策略)

    跨域与同源策略 跨域:是指的通过JS在不同域之间进行数据传输或通信。同源策略:它是由Netscape提出的一个著名...

  • js通信——同源/跨域

    一、同源策略限制 同源:协议、域名、端口号都相同。同源策略限制:从一个源加载的文档或脚本与另一个源的资源进行交互。...

  • 前端面试必备之跨域通信的方式

    同源:协议、域名、端口相同 跨域通信: js进行DOM操作,通信时如果目标与当前窗口不满足同源条件,浏览器为了安全...

  • JSONP、CORS、跨域

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

  • 跨域问题

    跨域问题来自同源策略。 同源策略: 协议 域名 端口 带来影响:页面在进行通信的时候,dom ajax cooki...

  • 前端跨页面通信

    跨页面通信主要分两大类 同源页面间的跨页面通信 非同源页面间的跨页面通信 同源页面间的跨页面通信 1.BroadC...

  • Node.js之增删改查和跨域问题

    增删改查 server.js router.js controller.js 跨域问题 浏览器同源策略:协议+域名...

  • 跨域

    什么是跨域 跨域指JS不能访问和操作其他域下的资源。它是由浏览器的同源策略造成的,为的是加强浏览器的安全性。同源策...

  • 通信类

    什么是同源策略及限制? —> 前后端如何通信? —> 如何创建Ajax? —> 跨域通信的几种方式? 一、什么是同...

网友评论

      本文标题:js通信——同源/跨域

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