跨域
title: 跨域date: 2021-08-14 10:17:19.843
updated: 2021-08-14 10:28:10.489
url: /?p=439
categories: JavaScript
tags:
跨域
同源策略
同源策略(Same-Origin Policy)最早由 Netscape 公司提出, 是浏览器的一种安全策略。
同源: 协议、 域名、 端口号 必须完全相同。
违背同源策略就是跨域。
如何解决跨域
JSONP
1. JSONP 是什么
JSONP(JSON with Padding), 是一个非官方的跨域解决方案, 纯粹凭借程序员的聪明才智开发出来, 只支持 get 请求。
2. JSONP 怎么工作的?
在网页有一些标签天生具有跨域能力, 比如: img link iframe script。
JSONP 就是利用 script 标签的跨域能力来发送请求的。
3. JSONP 的使用
动态的创建一个 script 标签```javascript
var script = document.createElement(“script”);1
2
3
4
5
6
7
2. 设置 script 的 src,设置回调函数```javascript
script.src = "http://localhost:3000/testAJAX?callback=abc";
function abc(data) {
alert(data.name);
};将 script 添加到 body 中```javascript
document.body.appendChild(script);1
2
3
4
5
6
7
8
9
10
11
12
4. 服务器中路由的处理```javascript
router.get("/testAJAX" , function (req , res) {
console.log("收到请求");
var callback = req.query.callback;
var obj = {
name:"孙悟空",
age:18
}
res.send(callback+"("+JSON.stringify(obj)+")");
)};
CORS
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
1. CORS 是什么?
CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS 是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持 get 和 post 请求。跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。
2. CORS 怎么工作的?
CORS 是通过设置一个响应头来告诉浏览器, 该请求允许跨域, 浏览器收到该响应以后就会对响应放行。
3. CORS 的使用
主要是服务器端的设置:
1 | router.get("/testAJAX" , function (req , res) { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LT的编程笔记!