当前位置:网站首页>跨域的学习
跨域的学习
2022-08-03 23:01:00 【前端小草籽】
跨域
跨域:AJAX请求的网址和 AJAX代码对应的页面的网址不是同一台服务器,就是跨域 非同源。
浏览器为了用户的信息安全,网页中有一个网络请求技术:AJAX 在网络请求时,请求的网址 和当前页面的网址 不是同一台服务器,就会被拒绝接收服务器发送的数据。(两个服务器的域名不是同一个)
<p>home</p>
<button id="btn">点击了ajax请求taobao项目的数据网址</button>
<script>
var btn = document.querySelector('#btn');
btn.addEventListener('click', function (el) {
//1.创建ajax对象
var xhr = new XMLHttpRequest() || new ActiveXObject('Micorsoft.XMLHTTP');
//2.配置网络请求
var url = 'http://192.168.0.108:8080/car'
xhr.open('GET', url, true); //true代表异步请求,默认也是异步请求
//3.发送网络请求
xhr.send();
//4.监听状态
xhr.onreadystatechange = function () {
//xhr.readyState == 4表示网络请求过来了
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
}
}
})
</script>
本地打开(也是一台服务器:域名:127.0.0.1:5500)的 index.html 文件 ,访问另外一台服务器(域名:192.168.0.108:8080)上托管的数据,利用AJAX进行访问,就会出现 跨域 报错
什么是同源策略?
浏览器的一种安全策略,指 两个网址的 协议 ip port 三者一样代表同源
eg:
同源==>pathname不参与同源判断
https://www.blue.com/index.html
https://www.blue.com/home/goods/ajax1
只要两个网址的 协议 ip port 三者一样,就是同源,所以上面两个网址是同源的。
异源:协议不一样
http://www.blue.com/index.html
https://www.blue.com/home/ajax
分析:http://www.blue.com/index.html得到的网页中AJAX请求想得到https://www.blue.com/home/ajax这个网页,不能成功,因为两个网页所对应的服务器不是同一台,异源。
异源:域名不一样(ip和端口)
http://www.blue.com/index.html
https://www.blue.cn/home/ajax
异源:域名不一样(ip和端口)
https://www.blue.com/index.html
https://172.153.2.60:8848/home/ajax
分析:假设域名www.blue.com经过DNS解析后为172.153.2.60:8848,这两个网址也是异源。
解决跨域问题方法--CORS
跨源资源共享 (CORS)(或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它 origin(域,协议和端口),使得浏览器允许这些 origin 访问加载自己的资源.
跨源 HTTP 请求的一个例子:运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求。
出于安全性,浏览器限制脚本内发起的跨源 HTTP 请求。 例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。
跨源域资源共享(CORS)机制允许 Web 应用服务器进行跨源访问控制,从而使跨源数据传输得以安全进行。现代浏览器支持在 API 容器中(例如 XMLHttpRequest 或 Fetch)使用 CORS,以降低跨源 HTTP 请求所带来的风险。
解决方法:在服务器返回的数据包的头部设置 Access-Control-Allow-Origin
如果是开发阶段:
res.setHeader('Access-Control-Allow-Origin',"*"); //*表示,任何跨域请求的网址都可以通过如果是项目上线阶段:
res.setHeader('Access-Control-Allow-Origin',"要请求的另外一台服务器的协议 ip 端口");边栏推荐
- 单例模式使用饿汉式和懒汉式创建一定安全?很多人不知
- Nine ways to teach you to read the file path in the resources directory
- LabVIEW code generation error 61056
- 牛客2022 暑期多校3 H Hacker(SAM + 线段树查询区间内部最大子段和)
- 如何创建一个Web项目
- What is the difference between the generator version and the viewer version?
- P1449 后缀表达式
- Another MySQL masterpiece published by Glacier (send the book at the end of the article)!!
- node连接mysql数据库报错:Client does not support authentication protocol requested by server
- pikachu Over permission
猜你喜欢

Zilliz 2023 秋季校园招聘正式启动!

重发布实验报告
![navicat 连接 mongodb 报错[13][Unauthorized] command listDatabases requires authentication](/img/09/a579c60e07cdc145175e72673409f7.png)
navicat 连接 mongodb 报错[13][Unauthorized] command listDatabases requires authentication

encapsulation, package, access modifier, static variable

代码随想录笔记_动态规划_416分割等和子集

Embedded Systems: GPIO

物联网新零售模式,引领购物新潮流

2022-08-03 Oracle executes slow SQL-Q17 comparison

BMN: Boundary-Matching Network for Temporal Action Proposal Generation阅读笔记

Diazo Biotin-PEG3-DBCO | Diazo Compound Modified Biotin-Tripolyethylene Glycol-Dibenzocyclooctyne
随机推荐
What is memoization and what is it good for?
Binary search tree to solve the fallen leaves problem
First domestic open source framework 】 【 general cloud computing framework, any program can be made into cloud computing.
Creo 9.0二维草图的诊断:重叠几何
UVa 437 - The Tower of Babylon (White Book)
2022-08-03 Oracle executes slow SQL-Q17 comparison
Research status of target detection at home and abroad
Pytest learn-setup/teardown
Republish the lab report
redis持久化方式
log4j-slf4j-impl cannot be present with log4j-to-slf4j
Testng监听器
获国际权威认可 | 云扩科技入选《RPA全球市场格局报告,Q3 2022》
Fluorescein-PEG-CLS,胆固醇-聚乙二醇-荧光素科研试剂
The principle and use of AOSP CameraLatencyHistogram
伴随着元宇宙、web3.0等概念的兴起,数字人、数字场景等诸多数字化的形态开始出现
Kotlin - extension functions and operator overloading
P1449 后缀表达式
websocket多线程发送消息报错TEXT_PARTIAL_WRITING--自旋锁替换synchronized独占锁的使用案例
BMN: Boundary-Matching Network for Temporal Action Proposal Generation阅读笔记