目录
- 跨域问题
- 举个栗子
- Nginx解决跨域问题
- 什么时候发送OPTIONS方法
- 预检请求
- OPTIONS方法
前端用html + js 代码做一个简单的接口调用
后端用java写几个简单的接口
用这个配置文件启动nginx之后, 将html代码中的baseUrl改为 http://localhost/test 之后再次尝试调用接口.

接着讲nginx配置文件中注释部分代码取消注释, 重启nginx, 发现put跟delete类型的方法也可以正常调用

预检请求
HTTP请求可以分为简单HTTP请求和需预检HTTP请求(复杂HTTP请求).
满足以下条件的可以视为简单HTTP请求:
使用的方法为GET, POST, HEAD之一且Content-Type的值仅为下列之一:test-plain, multipart/form-data, application/x-www-form-urlencoded
其余的全视为需预检HTTP请求.

OPTIONS方法

其中Type为preflight类型的请求中, 调用的方法类型即为OPTIONS

查看这个请求的具体返回值我们可以发现response的头部中有Access-Control-Allow-Origin和Access-Control-Allow-Methods两个字段,他们的值就是我们在Nginx配置文件中设置的值
上边这段代码的意思就是当请求方法类型为OPTIONS时,将允许的来源和方法设置进response头部中,并且将状态码设置为204(成功且不刷新页面).

但是这里有个疑惑就是为什么需要针对OPTIONS类型的方法去做特殊处理,不是所有的请求都会经过nginx并且将Access-Control-Allow-Origin和Access-Control-Allow-Methods两个字段设置好吗.希望有懂的大佬可以留言解惑下.
至此用Nginx解决跨域问题的介绍完毕, 如果有什么错误的地方希望各位指出, 谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/170196.html