美文网首页技术干货
跨域问题解决方案

跨域问题解决方案

作者: 求索 | 来源:发表于2020-03-02 13:08 被阅读0次

跨域概念介绍

为了保证用户信息的安全,防止恶意的网站窃取数据,引入了同源政策。同源指协议、域名、端口三者相同,同源政策就是限制非同源访问测策略。

随着互联网的发展,同源政策也越来越严格。目前非同源主要有如下三种限制:

  1. Cookie、LocalStorage 和 IndexDB 无法读取;
  2. DOM 无法获得;
  3. AJAX 请求不能发送;

非同源访问引发的问题就是跨域访问问题,有些时候需要跨域协调处理问题,那么如何解决呢?

cookie

  1. 保持两个网站的 document.domain 相同,cookie即可以访问
  2. 片段标识符:在父子窗口的场景可以通过片段标识符(location.hash)来修改或获取信息。通过监听 hashchange 事件来获取更新
  3. window.name 修改
  4. PostMessage

LocalStorage解决方案

  1. PostMessage

ajax

ajax和其它两种跨域情况不一样,前面两种仅仅是获取数据。ajax可以获取数据,同时修改数据。我们可以通过三种方式来规避跨域问题。

  • JSONP
  • WebSocket
  • CORS

JSONP 是通过动态添加一个脚本到页面,通过回调函数来实现跨域ajax调用。其核心原理是将ajax调用修改为资源访问,将调用权限赋给对方;由对方使用回调函数处理。

window.onload = function () {
  addScriptTag('http://mydemo.com/jsonp?callback=foo');
}
function jsonpCallback(jsonpresult) {
  console.log(jsonpresult);
}

WebSocket 是一种操作tcp/udp的实现方式,通过底层通信技术解决通信问题。

CORS是跨源资源分享(Cross-Origin Resource Sharing)的缩写。它是W3C标准,是跨源AJAX请求的根本解决方法。相比JSONP只能发GET请求,CORS允许任何类型的请求。

不管哪种解决方案,都需要服务提供者和客户端两种同时做改造。

form表单提交会发生跨域吗?

我们的域名是 www.demo.com ,如下代码会发生跨域吗?

    <form action="http://baidu.com"  method="post" id="myForm">
        <input name="demo" id="demo" value="aaa"> 
        <input name="sign" id="sign" value="aaa"> 
        <button v-on:click="submitFile($event)">submit</button>
    </form>

这里既没有获取cookie、也没有获取dom、更没有ajax调用,所以没有跨域。

相关文章

  • 跨域问题,解决方案

    跨域问题,解决方案 - Nginx反向代理跨域问题,解决方案 - CORS方案此为原作者的链接:跨域问题,解决之道

  • Web前后端跨域问题处理

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

  • 开发环境跨域和生产环境跨域

    开发环境跨域 前后端分离,IP地址不同,请求数据必然导致跨域问题;解决方案:proxy设置 生产环境跨域 解决方案...

  • Js请求跨域问题

    一、请求跨域问题概述 跨域:指的是协议名、端口或者域名不一致的情况都是跨域。 二、跨域问题的解决方案 1、同域代理...

  • 2、JS-Web-API知识点

    跨域问题:跨域的解决方案?教程: https://www.imooc.com/video/6238https://...

  • Spring Boot使用CORS解决跨域问题

    一、跨域问题描述 Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等。CORS 与 ...

  • JWT简记

    JSON Web Token(JWT)是目前最流行的跨域认证解决方案。 跨域认证问题及传统解决方案 传统认证流程 ...

  • uni-app之浏览器跨域问题解决方案

    Chrome调试跨域问题解决方案 1.跨域CORS(Cross-Origin Resource Sharing) ...

  • 跨域

    博客 说说跨域那些事儿 不要再问我跨域的问题了 前端常见跨域解决方案(全) 同源策略 JSONP(填充式JSON)...

  • 面试官:那有没遇到跨域问题,如何解决跨域?

    面试官:有没遇到跨域问题,如何解决跨域? 一、同源策略 谈到跨域问题,要先谈浏览器的同源策略。 二、解决方案 1、...

网友评论

    本文标题:跨域问题解决方案

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