美文网首页
2018-09-05 什么是跨域、跨域的解决方式 同源策略

2018-09-05 什么是跨域、跨域的解决方式 同源策略

作者: 忙于未来的民工 | 来源:发表于2019-04-12 10:25 被阅读0次

1:什么是域

两个URL具有相同的协议、主域名、子域名、端口便是相同的域,若有一个不同就是不同的域。

2:URL解析

http://c.b.a.com:8000/dir/file.js?params=22

http: 协议名

c.b.a.com:域名

8000: 端口号

dir:虚拟目录名

file.js: 请求的文件名

params:请求的参数名

--------------------------------------------------

一级域名: a.com

二级域名:b.a.com // b是子域名

三级域名:c.b.a.com // c、b是子域名

3:什么是跨域?

当前网页发起网络请求时所请求的接口(URL)必须和当前网页(请求当前网页的URL)在同一个域,否则就是跨域。

4:跨域的解决方式

4.1:JSONP: 只支持get请求

方式一:创建一个script标签,然后将回调函数作为参数,传给服务器

function callback (res) {}

var JSONP = document.createElement("script")

JSONP.type = "text/javascript"

JSONP.src = "url"

document.getElementsByTagName('head')[0].appentChild(JSONP)

方式二:直接使用script标签

function jsonpCallback(res){}

script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback

服务器返回数据:

jsonpCallback(data)

总结:

script请求的数据,是直接作为js代码进行运行的。

将回调函数的的名字传给服务器,服务器返回数据给前端时,将数据已如上形式返回,前端接收到后相当于直接调用了jsonpCallback这个函数

4.2:CORS协议 

方法:前端一般什么也不做,只需要后台进行设置即可。后台在响应体中设置

如果需要跨域携带cookie,前端请求时需要设置withCredentials为true

Access-Control-Allow-Origin

Access-Control-Allow-Credentials

--------------------------------------------------------补充--------------------------------------------------

注意:如果需要跨域携带cookie,Access-Control-Allow-Origin这个字段不能返回*,需要是来源的域名。并且当前端设置了跨域携带cookie事,后台也需要设置Access-Control-Allow-Credentials字段

4.3:设置代理

方法:页面请求如果需要跨域,可以使当前请求先访问和页面URL同源的服务器,然后在服务器中请求另一台服务器的数据,接着返回给前端。这便是代理。

4.4:修改本地host

修改本地host进而达到欺骗浏览器的目的

5:同源策略

同源策略是浏览器规定的,也是页面请求无法跨域的根本原因。规定不同的域之间cookie、localstorage、IndexDB、无法共享

在域a中无法获取域b中的dom元素节点

ajax请求不能发送。

具体解决的方法:

http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html

相关文章

  • H5跨域访问

    跨域访问是源于浏览器的同源策略而引申出来的概念 1、先了解什么是同源策略和跨域访问 同源策略、跨域解决方案 - R...

  • Flask-cors跨域

    什么是跨域 为什么要考虑跨域问题 同源策略 解决跨域问题 方式一: 使用 JSONP (一种非Ajax技术,需要前...

  • AJAX

    题目 手写一个ajax 跨域的常用实现方式 知识点 XMLHttpRequest 状态码 跨域:同源策略,跨域解决...

  • H5 知识点 - 收藏集 - 掘金

    跨域解决方案总结 - 前端 - 掘金为什么需要跨域? 就得先知道同源策略. 同源策略 同源策略是为了保证数据的安全...

  • 跨域的几种方式

    跨域以及跨域的几种方式 讲解跨域之前我们先来看看什么是同源策略 什么是同源策略 通常来说,浏览器出于安全方面的考虑...

  • 通过script标签实现跨域

    跨域 什么是跨域? 跨域问题是由于javascript语言安全限制中的同源策略造成的。同源策略是由Netscape...

  • js常见跨域解决方案

    参考:前端常见跨域解决方案(全) 跨域,什么是“域”? 这里就要先说说同源策略了。所谓同源是指"协议+域名+端口"...

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

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

  • 有关跨域的相关问题和方法

    跨域是什么 同源策略 在讲解什么是跨域之前先要清楚什么是同源策略,“同源政策”(same-origin polic...

  • 跨域

    1,什么是同源? 2,什么是同源策略? 3,不受同源策略限制的 4,解决跨域的几种方式: 1,Ajax的jsonp...

网友评论

      本文标题:2018-09-05 什么是跨域、跨域的解决方式 同源策略

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