当前位置: 百科首页 > 生活小常识

浅谈跨域

2021-10-17 06:46:14|来源:网络|1208 ℃|移动端

浅谈跨域

跨域意味着浏览器无法执行其他网站的脚本。它是由浏览器的同源策略引起的,是由浏览器强加的安全限制。

所谓同源,就是域名、协议、端口都一样。如果你不懂,那也没关系。举个栗子:

调用(非跨域)

呼叫(不同主域名:123/456,跨域)

已调用(不同的子域:abc/def,跨域)

呼叫(不同端口:8080/8081,跨域)

已调用(不同协议:http/https,跨域)

请注意:虽然localhost和127.0.0.1都指向这台机器,但它们也属于跨域。

当浏览器执行一个javascript脚本时,它会检查该脚本属于哪个页面。如果不是同源页面,就不执行。

解决方法简单介绍:

1、JSONP:

关于如何使用我就不赘述了,但是注意JSONP只支持GET请求,不支持POST请求。

2.代理:

例如,如果您需要调用,您可以编写一个接口在后端调用并获取返回值,然后将其返回给index.html。这是一种代理模式。相当于绕过浏览器,自然没有跨域问题。

3.PHP端修改表头(XHR2模式)

在php界面脚本中添加以下两句话:

标题(‘访问控制-允许-原始: * ‘);//允许从所有来源访问

标题(‘访问控制-允许-方法简单介绍:发布,获取’);//允许访问

由于浏览器同源策略的限制。同源策略是一种约定,是浏览器的核心和基本安全功能。如果没有相应的策略,浏览器的正常功能可能会受到影响。可以说Web是建立在同源策略的基础上的,浏览器只是同源策略的一种实现。同源策略避免一个域中的javascript脚本与另一个域中的内容进行交互。所谓同源性(即同域)是指两页有相同的协议、主机和端口号

当请求url的协议、域名和端口中的任何一个不同于当前页面url时,它就是跨域的

请求的页面url是否跨域(协议、域名、端口号相同)不同跨域协议(http/https)不同跨域主域名(test/百度)不同跨域子域(不同跨域端口号(8080/7001)

[1]无法读取非同源网页的Cookie、LocalStorage和IndexedDB

[2]无法联系非同源网页的DOM

[3] AJAX请求不能发送到不同的源地址

[1]设置document.domain,解决不能读取非同源网页的Cookie问题

因为浏览器通过document.domain属性检查两个页面是否同源,只要设置了同一个document.domain,两个页面就可以共享Cookie(此方案仅限于同一个主域不同子域的跨域应用场景。)

[2]跨文档通信API:window.postMessage

调用postMessage方法简单介绍,实现父窗口向子窗口发送消息(子窗口也可以通过这个方法简单介绍向父窗口发送消息)

它可以用来解决以下问题:

页面和新窗口之间的数据传输它在上述三种情况下打开页面和嵌套iframe消息之间的跨域数据传输

呼叫消息事件,收听对方发送的消息

【3】JSONP

JSONP是一种常见的服务器和客户端之间的跨源通信方法简单介绍。最大的特点是应用简单,兼容性好(兼容较低版本IE)。缺点是只支持get请求,不支持post请求。

核心思想:网页通过添加一个向服务器请求JSON数据。收到请求后,服务器将数据发送回具有指定名称的回调函数的参数位置。

(1)本地实现:

jQuery ajax:

Vue.js

【4】CORS

CORS是跨来源资源共享的缩写。它是W3C标准,属于跨来源AJAX请求的基本解决方案。

1.普通跨域请求:只有服务器端需要设置访问控制允许源

2.带cookie的跨域请求:需要设置前端和后端

【前端设置】根据xhr.withCredentials字段,判断是否有cookie。

原生ajax

jQuery ajax

虚拟资源

axios

[服务器设置]

对CORS的服务器端支持主要通过设置访问控制允许源来实现。如果浏览器检测到相应的设置,可以允许Ajax跨域访问。

Java背景

Nodejs后台

PHP背景

Apache需要使用mod_headers模块激活HTTP头的设置,默认激活。您只需将以下内容添加到Apache配置文件、或的配置中

文章每周持续更新。可以第一次在微信上看“前端集锦”,回复[视频][书籍]领取200G视频资料和30本PDF书籍

标签: 域名, 浏览器, 端口, 脚本, 跨域

相关推荐

Vivaldi浏览器设置为中文方法步骤

浏览器输入192.168.0.1进不去是什么原因(如何解决)

Flash小游戏下载游玩攻略

老域名还有投资的价值吗?浅谈seo收录

怎么手动清除广告软件

版权申明

本文"浅谈跨域":https://m.jtmc.com.cn/5736.html内容来自网络,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们admin@jtmc.com.cn,我们会及时处理和回复。

本文共计1719个字,预计阅读时长12分钟

本栏目推荐

ai工具箱

中国生僻字大全

栏目标签

分手 手术 生僻字成语 男人 女性 中国汉字大全 中国民间方言 成语典故 网络梗 养鱼知识 男生 中华语言 中国生僻字大全 食物 治疗 颜色 游戏 生僻字 民俗方言 中华方言习俗 朋友 皮肤 女人 成语大全 微信 女生 宝宝 衣服 谈恋爱 丰胸