当前位置:主页 > 查看内容

浅谈跨域

发布时间:2021-05-09 00:00| 位朋友查看

简介:什么是跨域 跨域是浏览器不能执行其他网站的脚本。是由 浏览器的同源策略 造成的是浏览器对JavaScript实施的安全限制。 同源策略限制了一下行为 Cookie、LocalStorage 和 IndexDB 无法读取 DOM 和 JS 对象无法获取 Ajax请求发送不出去 场景 同源策略 同源策……

什么是跨域?

跨域,是浏览器不能执行其他网站的脚本。是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。

同源策略限制了一下行为:

Cookie、LocalStorage 和 IndexDB 无法读取

DOM 和 JS 对象无法获取

Ajax请求发送不出去

场景

在这里插入图片描述

同源策略

同源策略 是由NetScape(网景公司)提出的一个著名的安全策略,它是浏览器最核心也最基本的安 全功能

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

跨域的解决方法

1、jsonp方式

jsonp的原理就是利用script标签没有跨域限制,通过script标签src属性,发送带有callback参数的GET请求,服务端将接口返回数据拼凑到callback函数中,返回给浏览器,浏览器解析执行,从而前端拿到callback函数返回的数据。

2、cors(目前最流行的跨域方案

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

浏览器将CORS跨域请求分为简单请求和非简单请求。

只要同时满足一下两个条件,就属于简单请求

(1)使用下列方法之一:

  • head

  • get

  • post
    (2)请求的Heder是

  • Accept

  • Accept-Language

  • Content-Language

  • Content-Type: 只限于三个值:application/x-www-form-urlencoded、multipart/form-data、text/plain
    不同时满足上面的两个条件,就属于非简单请求。浏览器对这两种的处理,是不一样的。

3、nginx代理跨域

ginx代理跨域,实质和CORS跨域原理一样,通过配置文件设置请求响应头Access-Control-Allow-Origin…等字段。

1)nginx配置解决iconfont跨域
??浏览器跨域访问js、css、img等常规静态资源被同源策略许可,但iconfont字体文件(eot|otf|ttf|woff|svg)例外,此时可在nginx的静态资源服务器中加入以下配置。
在这里插入图片描述

2)nginx反向代理接口跨域
跨域问题:同源策略仅是针对浏览器的安全策略。服务器端调用HTTP接口只是使用HTTP协议,不需要同源策略,也就不存在跨域问题。
实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域访问。

#proxy服务器
server {
listen 81;
server_name www.domain1.com;

location / {
    proxy_pass   http://www.domain2.com:8080;  #反向代理
    proxy_cookie_domain www.domain2.com www.domain1.com; #修改cookie里域名
    index  index.html index.htm;

    # 当用webpack-dev-server等中间件代理接口访问nignx时,此时无浏览器参与,故没有同源限制,下面的跨域配置可不启用
    add_header Access-Control-Allow-Origin http://www.domain1.com;  #当前端只跨域不带cookie时,可为*
    add_header Access-Control-Allow-Credentials true;
;原文链接:https://blog.csdn.net/weixin_49790903/article/details/115443000
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:MySQL常用存储引擎详解 下一篇:没有了

推荐图文


随机推荐