http跨域时的options请求

news/2024/7/10 23:03:30 标签: jquery
	出于安全考虑,并不是所有域名访问后端服务都可以。其实在正式跨域之前,浏览器会根据需要发起一次预检(也就是option请求),用来让服务端返回允许的方法(如get、post),被跨域访问的Origin(来源或者域),还有是否需要Credentials(认证信息)等
	 浏览器将CORS请求分为两类:简单请求(simple request)和非简单请求(not-simple-request),简单请求浏览器不会预检,而非简单请求会预检。这两种方式怎么区分?

同时满足下列三大条件,就属于简单请求,否则属于非简单请求

1.请求方式只能是:GET、POST、HEAD

2.HTTP请求头限制这几种字段:Accept、Accept-Language、Content-Language、Content-Type、Last-Event-ID

3.Content-type只能取:application/x-www-form-urlencoded、multipart/form-data、text/plain

对于简单请求,浏览器直接请求,会在请求头信息中,增加一个origin字段,来说明本次请求来自哪个源(协议+域名+端口)。服务器根据这个值,来决定是否同意该请求,服务器返回的响应会多几个头信息字段,如图所示:上面的头信息中,三个与CORS请求相关,都是以Access-Control-开头。

1.Access-Control-Allow-Origin:该字段是必须的,* 表示接受任意域名的请求,还可以指定域名

2.Access-Control-Allow-Credentials:该字段可选,是个布尔值,表示是否可以携带cookie,(注意:如果Access-Control-Allow-Origin字段设置*,此字段设为true无效)

3.Access-Control-Allow-Headers:该字段可选,里面可以获取Cache-Control、Content-Type、Expires等,如果想要拿到其他字段,就可以在这个字段中指定。比如图中指定的GUAZISSO

非简单请求是对那种对服务器有特殊要求的请求,比如请求方式是PUT或者DELETE,或者Content-Type字段类型是application/json。都会在正式通信之前,增加一次HTTP请求,称之为预检。浏览器会先询问服务器,当前网页所在域名是否在服务器的许可名单之中,服务器允许之后,浏览器会发出正式的XMLHttpRequest请求,否则会报错。(备注:之前碰到预检请求后端没有通过,就不会发正式请求,然后找了好久原因,原来后端给忘了设置…)Java后端实现拦截器,排除Options


http://www.niftyadmin.cn/n/1522429.html

相关文章

java获取系统常量

import java.util.Properties; public class SystemConstants {public static void main(String[] args) {Properties propsSystem.getProperties(); //系统属性 // 1: 常用换行符, 路径分隔符,文件分隔符System.out.println("文件分隔符:"props.g…

linux 执行脚本命令

方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: cd /data/shell ./hello.sh 方法二:以绝对路径的方式去执行bash shell脚本: /data/shell/hello.sh 方法三:直接…

tar: Removing leading `/‘ from member names

[roothaha ~]#tar -czf /root/ss3.tat.gz /root/ss2 tar: Removing leading /’ from member names 因为我们使用的是绝对路径,而不是相对路径。而tar 命令默认是采用相对路径来进行压缩打包的。 我们需要使用参数 -P(大写)来允许我们使用绝对路径进行压缩打包。记住…

xshell 将文件夹下的所有文件打包到指定文件夹下

sinosoft/dbbackups/20210603_genome.tar:打包到指定目录 /sinosoft/gsmaFiles/genome/:打包的文件夹 tar -cvPf /sinosoft/dbbackups/20210603_genome.tar /sinosoft/gsmaFiles/genome/ 打包压缩 tar -zcvPf /sinosoft/dbbackups/20210603_genome.tar /sinosoft/gsmaFiles/gen…

Linux——shell脚本的基础篇(变量定义、变量种类、变量操作)

一、变量的定义 变量即在程序运行过程中它的值是允许改变的量 变量是用一串固定的字符来表示不固定的值的一种方法 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息 在 shell 中变量是不能永久保存在系统中的,必须在文件中声…

定时任务 编写案例

定时任务编写完成后,不用重启 基本命令 crontab –e //修改 crontab 文件,如果文件不存在会自动创建。 crontab –l //显示 crontab 文件。 crontab -r //删除 crontab 文件。 crontab -ir //删除 crontab 文件前提醒用户。 service crond status //查看crontab服务…

动态给id设置style

<label id"titlename" ></label> var d document.getElementById("titlename"); d.style.width"20%"; d.style.left "35%";

eclipse中,启动tomcat成功,但不加载项目,打印日志问题

其他的情况网上有很多案例&#xff0c;下面只说一种不太常见的情况。先说背景&#xff0c;我这个项目之前是在IDEA开发的&#xff0c;现在改用eclipse开发&#xff0c;出现了启动tomcat成功&#xff0c;但是不加载我这个项目的情况。各种方法都试过了&#xff0c;就是解决不了这…