什么是跨域

简介: 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 就可以直接发。

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

相关文章
vsftp的默认目录那点事
   1、vsftpd 的默认根目录是/var/ftp/ 默认配置下,匿名用户登录vsftpd 服务后的根目录是/var/ftp/ 如图:的对应关系   2、系统用户登录  (vsftpd 服务后的根目录是系统用户的家目录。
4875 0
|
25天前
|
Java API 开发工具
阿里云百炼如何使用?首次调用千问API教程参考
本文为阿里云百炼调用千问大模型API的完整入门指南。文章首先指导用户完成账号注册、百炼开通、API Key与业务空间ID的获取,并详细演示了在Linux、macOS、Windows三大系统中配置API Key至环境变量的方法。随后,文章分步详解了通过Python、Node.js、Java、curl及Go/PHP/C#等主流语言调用qwen3.8-max模型的完整代码示例与关键配置,涵盖SDK安装、客户端初始化、请求发送与响应解析。
|
1月前
|
人工智能 机器人 数据挖掘
4 大技巧,教你打造高效的 AI Agent 团队!
Claude 母公司 Anthropic 官方分享:怎么在团队中高效和 AI 协作,覆盖文档驱动协作、Skills 角色定义、多 Agent 分工、北极星目标设定等,配合鱼皮团队真实落地案例讲透
135 0
|
3月前
|
人工智能 安全 BI
从落地视角拆解企业Agent三层落地骨架
本文揭示企业Agent落地常见误区,提出经数百家校企验证的标准化三层架构:模型层(决策大脑)、Skill层(业务经验库)、执行层(落地手脚)。三层解耦设计兼顾安全可控、降本增效与老旧系统兼容,助力企业突破POC瓶颈,实现AI规模化投产。
224 0
|
9月前
|
消息中间件 Cloud Native Java
SpringCloud概述
Spring Cloud是Spring推出的微服务一站式解决方案,弥补了分散技术栈的整合难题。它具备约定大于配置、组件丰富、开箱即用等特点,完美支持云原生架构。版本以伦敦地铁站命名,如Hoxton.SR12,避免与子项目版本冲突,便于统一管理。
SpringCloud概述
|
9月前
|
存储 关系型数据库 MySQL
为什么MySQL索引结构是B+tree ?
MySQL采用B+树作为索引结构,因其非叶子节点仅存键值与指针,可存储更多键,降低树高,提升查询效率。数据集中于叶子节点并形成双向链表,支持高效稳定的范围查询。通常树高为2-3层,即可容纳上千万数据,显著优于二叉树或B树。
|
9月前
|
安全 Java 索引
说说 java 中常见的集合类
本文介绍了Java集合框架的核心接口(Collection、List、Set、Map)及其常见实现类。图示展示了类间关系,重点解析ArrayList、LinkedList、HashSet、HashMap等实现原理与性能特点,并指出线程安全及进阶特性,助你掌握集合体系关键知识点。
|
5月前
|
存储 安全 固态存储
阿里云服务器8核16G、8核32G、8核64G租用价格:不同实例收费价格及最新活动价格
阿里云提供多样化的8核云服务器配置,主要包括8核16G、8核32G、8核64G,满足不同企业和开发者需求。实例规格涵盖经济型e实例、通用算力型u1/u2i、计算型c9i、通用型g9i及内存型r9i等,适用于从个人学习到企业级应用的多个场景。价格方面,提供按量付费和包年包月模式,后者长期使用更优惠。此外,阿里云还推出多项优惠活动,结合优惠券使用,可进一步降低成本,实现性能与成本的最佳平衡。
938 3
|
9月前
|
安全
HTTP协议中请求方式GET 与 POST 什么区别 ?
简介:项目开发中常见GET与POST请求方式,主要区别在于参数传递位置、大小限制及安全性。GET用于获取数据,参数在URL中;POST用于提交数据,参数在请求体中,更安全。现代项目多采用RESTful风格,通过URL定位资源,不同请求方式(GET/POST/PUT/DELETE)对应不同操作,提升接口规范性与可读性。(238字)
|
9月前
|
缓存 安全
String,StringBuilder 和 StringBuffer 的区别
String不可变,StringBuilder与StringBuffer可变;后者线程不安全,StringBuffer线程安全。大量拼接时优先选用后两者,多线程用StringBuffer,单线程用StringBuilder。String因final设计保证不可变,利于安全与缓存。

热门文章

最新文章