使用CORS解决跨域问题

CORS(Cross-Origin Resource Sharing)跨域资源共享

因为浏览器的同源策略才出现了跨域问题。 

CORS是一套机制,用于浏览器校验跨域请求。

它的基本理念是:

  • 只要服务器明确表示允许,则校验通过
  • 服务器明确拒绝或没有表示,则校验不通过

CORS将请求分为两类:

  • 简单请求
  • 预检请求:非简单请求(options 请求)

满足以下条件的是简单请求:

  • 请求方法为:GET、POST、HEAD
  • 头部字段满足CORS安全规范,详见W3C。概括起来就是没有自定义请求头。
  • 请求头的Content-Type为:text/plain、multipart/form-data、application/x-www-form-urlencoded

其他情况都是非简单请求。

简单请求和预检请求发送请求时的区别

非简单请求发起CORS跨域时,会先发送一次预检请求,也就是 options 请求,预检通过后再发送真实请求,跟简单请求一致。

简单请求:

预检请求:

 

优化预检请求:Access-Control-Max-Age

可见一旦达到触发条件,跨域请求便会一直发送2次请求,这样增加的请求数是否可优化呢?答案是可以,OPTIONS预检请求的结果可以被缓存。

Access-Control-Max-Age这个响应首部表示 preflight request (预检请求)的返回结果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被缓存的最长时间,单位是秒。 

如果值为 -1,则表示禁用缓存,每一次请求都需要提供预检请求,即用OPTIONS请求进行检测。

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

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

相关文章

NAT网关产品手册

产品用途 SG-NAT-410 网关支持 IP 地址跨网段和通讯端口的转换,为不方便修改参数的以太网通讯设备的信息化联网提供便捷的解决方案。网关有 1 个两口以太网交换机接口(LAN 口 ) 和 1 个单口以太网通讯接口 (WAN 口 ) 。不对原系统做任何硬件和软件修改&…

秃姐学AI系列之:批量归一化 + 代码实现

目录 批量归一化 核心想法 批归一化在做什么 总结 代码实现 从零实现 创建一个正确的BatchNorm层 应用BatchNorm于LeNet模型 简单实现 QA 批量归一化 训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。 因为数据在网络最开始&…

OpenHarmony中的fastjson gson应该这样用

【问题背景】 随着越来越多的开发者开始投入北向应用的开发,无数的人开始问我:鸿蒙三方库是否有fastjson,是否有gson,当前json和对象的转换要怎么搞。 作为程序员,我的每个项目都逃不掉fastjson/gson等三方库&#x…

六西格玛培训真相曝光:识别并避免这些常见陷阱!

在当今企业管理领域,六西格玛作为提升质量与效率的强大工具,其影响力日益增强,但伴随其普及的浪潮,一系列培训陷阱也悄然浮现,成为求学者路上的隐形障碍。作为深耕企业咨询领域的专家,张驰咨询特此为您揭秘…

FPGA在医疗方面的应用

可编程逻辑支持以灵活、低风险的方式成功实施系统设计,同时提供了最佳的成本效率和增值的差异化功能,延长了医疗保健应用的生命周期,包括诊断成像、电子医疗、治疗和生命科学与医院设备。 在医疗方面的应用非常广泛,以下是几个主…

【Prettier】代码格式化工具Prettier的使用和配置介绍

前言 前段时间,因为项目的prettier的配置和eslint格式检查有些冲突,在其prettier官网和百度了一些配置相关的资料,在此做一些总结,以备不时之需。 Prettier官网 Prettier Prettier 是一种前端代码格式化工具,支持ja…

SQL Server数据库 创建表,和表的增删改查

打开SQL Server工具,连接服务器 右击数据库,创建新的数据库 新建表 填写列,我添加了Id,Name,Sex,Age,和class列 右键表刷新一下就有了 我又同时创建了一个Class表 点击新建查询,现在写代码添加数据,也可以操作表来对数据进行添加 …

黑马JavaWeb企业级开发(知识清单DAY2完结)06——Vue(概述、指令、生命周期)

文章目录 前言一、Vue概述1. MVVM前端开发思想2. 框架是什么3. Vue介绍4. Vue快速入门 二、Vue常用指令三、Vue生命周期总结 前言 本篇文章是2023年最新黑马JavaWeb企业级开发(知识清单DAY2完结)06:Vue(概述、指令、生命周期&…

设计模式篇(DesignPattern - 创建型模式)

目录 模式一:单例模式 一、简介 二、种类 1. 饿汉式(静态常量) 1.1. 代码 1.2. 优缺点 2. 饿汉式(静态代码块) 2.1. 代码 2.2. 优缺点 3. 懒汉式(线程不安全) 3.1. 代码 3.2. 优缺点 4. 懒汉式(线程安全,…

GeoStudio2024:地质工程的瑰宝下载安装介绍

引言 青山隐隐,流水潺潺,吾心所向,乃地质之奥秘。GeoStudio2024,如同一卷古籍,蕴藏无尽智慧,助吾等探寻地质之真谛。今以李白之笔,述其妙用,愿与君共赏。 初识GeoStudio2024 初见…

港股震荡中保持乐观,市场信心回来了!

港股上午盘三大指数集体上涨,恒生科技指数一度冲高至1.54%,最终收涨0.98%,恒生指数上涨1.06%。盘面上,大型科技股多数维持上涨行情,百度、腾讯涨超1.5%,快手、美团小幅上涨,阿里巴巴、京东飘绿&…

没及格,我猜这套华为软件测试面试题没几个人能及格

一.填空 1、 系统测试使用( C )技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。 A、 单元测试 B、 集成测试 C、 黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括(B &…

layui栅格布局设置列间距不起作用

layui栅格布局支持设置列间距,只需使用预置类layui-col-space*即可。不过实际使用时却始终看不到效果。   根据layui官网文档的说明,只需要在行所在div元素的class属性中增加layui-col-space*即可出现列间距。如下图所示:   但是实际使用…

【数据结构】二叉树的顺序结构,详细介绍堆以及堆的实现,堆排序

目录 1. 二叉树的顺序结构 2. 堆的概念及结构 3. 堆的实现 3.1 堆的结构 3.2 堆的初始化 3.3 堆的插入 3.4 堆的删除 3.5 获取堆顶数据 3.6 堆的判空 3.7 堆的数据个数 3.8 堆的销毁 4. 堆的应用 4.1 堆排序 4.1.1 向下调整建堆的时间复杂度 4.1.2 向上调整建…

GPT-4o System Card is released

GPT-4o System Card is released, including red teaming, frontier risk evaluations, and other key practices for industrial-strength Large Language Models. https://openai.com/index/gpt-4o-system-card/ 报告链接 企业级生成式人工智能LLM大模型技术、算法及案例实战…

MSSQLILABS靶场通关攻略

判断注入 首先用单双引号判断是否存在注入,这里可以看到是单引号 判断是否为 MSSQL 数据库 可以通过以下Payload来探测当前站点是否是MSSQL数据库,正常执行说明后台数据库为MSSQL;也可以根据页面的报错信息来判断数据库 and exists( select…

基于pygame的雷电战机小游戏

import pygame import sys import random# 初始化 Pygame pygame.init()# 设置窗口尺寸 WIDTH, HEIGHT 800, 600 screen pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("雷电战机")# 设置颜色 BLACK (0, 0, 0) RED (255, 0, 0) GREEN (…

对于现货白银走势图分析,不是单纯为了回报

投资白银选对工具和产品真的很重要。如果投资者选择的是实物银条,或者纸白银等相对低效的投资方式,收益只能跟随白银的价格涨跌,比如今年以来,国际白银价格上涨了大概30%,投资者的收益就顶多只有30%,万一买…

[数据集][目标检测]道路积水检测数据集VOC+YOLO格式2699张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2699 标注数量(xml文件个数):2699 标注数量(txt文件个数):2699 标注…

redis实战——go-redis的使用与redis基础数据类型的使用场景(一)

一.go-redis的安装与快速开始 这里操作redis数据库,我们选用go-redis这一第三方库来操作,首先是三方库的下载,我们可以执行下面这个命令: go get github.com/redis/go-redis/v9最后我们尝试一下连接本机的redis数据库&#xff0…