什么是跨域

简介: CORS需浏览器与服务器共同支持,所有现代浏览器均已兼容。通信过程由浏览器自动完成,开发者无需特殊处理。关键在于服务器实现CORS接口。请求分为简单和非简单两类,区别在于请求方法和头信息是否超出限定范围,浏览器对此有不同处理机制。

一、简介

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

二、两种请求

浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。

只要同时满足以下两大条件,就属于简单请求。

(1) 请求方法是以下三种方法之一:

  • HEAD
  • GET
  • POST

(2)HTTP的头信息不超出以下几种字段:

  • Accept
  • Accept-Language
  • Content-Language
  • Last-Event-ID
  • Content-Type:只限于三个值
  • application/x-www-form-urlencoded
  • multipart/form-data
  • text/plain

这是为了兼容表单(form),因为历史上表单一直可以发出跨域请求。AJAX 的跨域设计就是,只要表单可以发,AJAX 就可以直接发。

凡是不同时满足上面两个条件,就属于非简单请求即跨域。浏览器对这两种请求的处理,是不一样的。

相关文章
|
2月前
|
运维 数据可视化 安全
SD-WAN 组网为什么经常栽跟头?多半在这四个坑
本文揭秘SD-WAN落地四大隐形陷阱:采购只比带宽、交付验收流于“能通”、TCO被首年低价误导、多厂商责任推诿。结合10余年企业网络交付经验,指出70%失败源于非技术环节,并给出POC实测、端到端SLA、三年TCO核算等可落地建议。(239字)
242 0
SD-WAN 组网为什么经常栽跟头?多半在这四个坑
|
2月前
|
Java API 开发工具
阿里云百炼如何使用?首次调用千问API教程参考
本文为阿里云百炼调用千问大模型API的完整入门指南。文章首先指导用户完成账号注册、百炼开通、API Key与业务空间ID的获取,并详细演示了在Linux、macOS、Windows三大系统中配置API Key至环境变量的方法。随后,文章分步详解了通过Python、Node.js、Java、curl及Go/PHP/C#等主流语言调用qwen3.8-max模型的完整代码示例与关键配置,涵盖SDK安装、客户端初始化、请求发送与响应解析。
|
3月前
|
人工智能 机器人 数据挖掘
4 大技巧,教你打造高效的 AI Agent 团队!
Claude 母公司 Anthropic 官方分享:怎么在团队中高效和 AI 协作,覆盖文档驱动协作、Skills 角色定义、多 Agent 分工、北极星目标设定等,配合鱼皮团队真实落地案例讲透
313 0
|
11月前
|
消息中间件 Cloud Native Java
SpringCloud概述
Spring Cloud是Spring推出的微服务一站式解决方案,弥补了分散技术栈的整合难题。它具备约定大于配置、组件丰富、开箱即用等特点,完美支持云原生架构。版本以伦敦地铁站命名,如Hoxton.SR12,避免与子项目版本冲突,便于统一管理。
SpringCloud概述
|
11月前
|
安全 Java 索引
说说 java 中常见的集合类
本文介绍了Java集合框架的核心接口(Collection、List、Set、Map)及其常见实现类。图示展示了类间关系,重点解析ArrayList、LinkedList、HashSet、HashMap等实现原理与性能特点,并指出线程安全及进阶特性,助你掌握集合体系关键知识点。
|
11月前
|
存储 关系型数据库 MySQL
为什么MySQL索引结构是B+tree ?
MySQL采用B+树作为索引结构,因其非叶子节点仅存键值与指针,可存储更多键,降低树高,提升查询效率。数据集中于叶子节点并形成双向链表,支持高效稳定的范围查询。通常树高为2-3层,即可容纳上千万数据,显著优于二叉树或B树。
|
11月前
HTTP协议中常见的状态码 ?
HTTP状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议,如WebSocket)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器内部错误),广泛应用于Web开发中。
|
11月前
|
算法 安全 数据安全/隐私保护
比较一下 DES、AES、SM4
DES、AES和SM4均为对称加密算法。DES采用56位密钥,已不推荐使用;AES支持128、192、256位密钥,全球广泛采用;SM4为我国商用密码标准,支持128位密钥,主要用于国内信息安全领域。
|
11月前
|
存储 关系型数据库 MySQL
MySQL数据库中的 char 与 varchar的区别是什么?
MySQL中char和varchar均用于存储字符串,但char为定长,固定空间,速度快但占空间;varchar为变长,按需存储,省空间但稍慢。设计表时应根据字段长度是否固定选择:如手机号用char(11),用户名等用varchar。
|
11月前
|
算法 数据安全/隐私保护
比较一下 RSA、ECDSA 和 SM2
RSA、SM2均为非对称加密算法。SM2基于椭圆曲线,密钥长度256位,安全性高且运算更快;RSA依赖大数分解,密钥通常1024-4096位。SM2为国密算法,受国内政策支持。ECDSA与SM2原理相似。

热门文章

最新文章