008-跨域

跨域

  • 什么是跨域?
  • 非同源限制
  • 跨域解决方案
    • CORS
    • JSONP
    • 服务器进行第三方代理
    • webscoket
    • window.postMessage

什么是跨域?

同源策略:协议相同、域名相同、端口号相同 的两个页面被认为是同源。
由一个页面的 js 访问不同源的页面内容,被认为是跨域,跨域是不安全的,会被浏览器拦截掉。

非同源限制

  1. 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB
  2. 无法接触非同源网页的 DOM
  3. 无法向非同源地址发送 AJAX 请求

跨域解决方案

CORS

CORS 是跨域资源分享(Cross-Origin Resource Sharing)的缩写。它是 W3C 标准,属于跨源 AJAX 请求的根本解决方法。
服务器端对于CORS的支持,主要是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

response.setHeader("Access-Control-Allow-Credentials", "true"); 

JSONP

网页通过添加一个<script>元素,向服务器请求 JSON 数据,服务器收到请求后,将数据放在一个指定名字的回调函数的参数位置传回来。

<script src="http://test.com/data.php?callback=dosomething"></script>
// 向服务器test.com发出请求,该请求的查询字符串有一个callback参数,用来指定回调函数的名字// 处理服务器返回回调函数的数据
<script type="text/javascript">function dosomething(res){// 处理获得的数据console.log(res.data)}
</script>

服务器进行第三方代理

💡 Tips:webpack代理请求,proxy代理,Nginx代理,服务器访问第三方服务器等
在这里插入图片描述

webscoket

在这里插入图片描述

let socket = new WebSocket("ws://localhost:3000");
socket.onopen = function(){socket.send("我叫xxx");
}
socket.onmessage = function(e){console.log(e.data);
}

window.postMessage

💡 Tips:它可用于解决以下方面的问题:页面和其打开的新窗口的数据传递,多窗口之间消息传递,页面与嵌套的iframe消息传递

// 父窗口打开一个子窗口
var openWindow = window.open('http://test2.com', 'title');// 父窗口向子窗口发消息(第一个参数代表发送的内容,第二个参数代表接收消息窗口的url)
openWindow.postMessage('Nice to meet you!', 'http://test2.com');
// 监听 message 消息
window.addEventListener('message', function (e) {console.log(e.source); // e.source 发送消息的窗口console.log(e.origin); // e.origin 消息发向的网址console.log(e.data);   // e.data   发送的消息
},false);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519189.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言数据类型详解及相关题——各种奇奇怪怪的偏难怪

文章目录 一、C语言基本数据类型溢出 二、存储原理符号位原码反码补码补码操作的例子 三、赋值中的类型转换常见返回类型——巨坑总结 一、C语言基本数据类型 溢出 因为数据范围&#xff08;即存储单元的位的数量&#xff09;的限制&#xff0c;可以表达的位数是有限的。 溢出…

Media Encoder 2024:未来媒体编码的新纪元 mac/win版

随着科技的飞速发展&#xff0c;媒体内容已成为我们日常生活中不可或缺的一部分。为了满足用户对高质量视频内容不断增长的需求&#xff0c;Media Encoder 2024应运而生&#xff0c;它凭借卓越的技术和创新的特性&#xff0c;重塑了媒体编码的未来。 Media Encoder 2024软件获…

【异常处理】Vue报错 Component template should contain exactly one root element.

问题描述 启动VUE项目后控制台报错&#xff1a; Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.翻译为&#xff1a;组件模板应该只包含一个根元素 查看vue代码&#xff0…

计算机网络:应用层知识点汇总

文章目录 一、网络应用模型二、域名系统&#xff08;DNS&#xff09;三、文本传输协议&#xff08;FTP&#xff09;四、电子邮件五、万维网和HTTP协议 一、网络应用模型 p2p也就是对等模型 二、域名系统&#xff08;DNS&#xff09; 我们知道&#xff0c;随着人们建立一个网站…

centos7 使用rpm包部署filebeat

先决条件参考 虚拟机部署elasticsearch集群-CSDN博客 下载并安装filebeat的rpm包 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.18-x86_64.rpmrpm -vi filebeat-7.17.18-x86_64.rpm 修改配置文件 配置文件内容可以参考 Repositories…

wince+gprs拨号上网总结

一、硬件连接 本次调试的GPRS模块引脚定义 三星主板全功能扩展串口2引脚定义 因GPRS模块可以和pc机直连进行数据通讯&#xff0c;那么收发肯定内部交叉&#xff0c;故主板和GPRS的连接也采用直连方式。如果接线不对则出现没有回应现象&#xff0c;拨号时出现端口不可用&#xf…

如何快速写一篇民间故事并生成视频?

大家平台在刷抖音的时候&#xff0c;可能会看到一些民间故事的视频&#xff0c;播放量一般都很高&#xff0c;凭借其独特魅力&#xff0c;许多创作者在几个月内迅速吸引了超过十万粉丝&#xff0c;实现了数万元的收益&#xff01;想要加入这个风潮吗&#xff1f;这类视频如何制…

一篇就够!产品经理必知的软件工具盘点

无论是初入职场的新人还是正在考虑转向产品经理领域的人&#xff0c;了解并熟练使用一些关键的软件工具对于成功地执行产品管理任务至关重要。在这篇文章中&#xff0c;我们将深入介绍一些产品经理常用的软件工具&#xff0c;涵盖项目管理、团队协作、原型设计以及数据分析等多…

Vue3.0 vue.js.devtools无法显示Pinia调试工具

之前的配置方式&#xff1a; app.use(createPinia()) app.mount(#app) 更新配置方式&#xff1a; app.use(createPinia()).mount("#app") 设置之后即可显示调试工具

NDK,Jni

使用 NDK&#xff08;Native Development Kit&#xff09;意味着在 Android 应用程序中集成 C/C 代码。通常情况下&#xff0c;Android 应用程序主要使用 Java 或 Kotlin 编写&#xff0c;但有时候需要使用 C/C 来实现一些特定的功能或性能优化。 NDK 提供了一组工具和库&…

深入了解Java中的StringBuilder与StringBuffer

深入了解Java中的StringBuilder与StringBuffer StringBuffer和StringBuilder的区别 因为字符串不可变&#xff0c;当字符串拼接&#xff08;尤其是使用号操作符&#xff09;时&#xff0c;需要考量性能的问题&#xff0c;不多毫无顾忌的创建太多String对象,从而对内存造成不必…

最长异或路径 ---- (字典树求异或最大)

目录 最长异或路径&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 代码实现&#xff1a; 最长异或路径&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 现在假设有一棵这样的树&#xff0c;我们并不关心每条边的路径权值为多少&#xff0c;假设划红线的…