vue项目CORS跨域请求500,post请求变options请求,到底是什么情况。

提示:以下内容是一个非专业开发的我对跨域的理解,并不10分准确。

一、先介绍为什么明明发送的是Post请求,为什么到服务器端就收到了Options请求,到底是谁在中间搞鬼。

要说明这个问题,要先搞明白什么是跨域。

跨域,就是不同源的网站之间想要传输内容,要解决的问题,全称叫”跨域资源共享“,也称CORS,不同源是指:协议(http,https)、端口、主域不同的站。举例说明下:

1、https://www.linyufan.com/html/和https://www.linyufan.com/ex/index/就是同源。

2、http://www.linyufan.com和https://www.linyufan.com不同源,协议不同,端口也不同,http是80,https是443端口。

3、https://www.zacseo.cn和https://www.linyufan.com不同源,主域不一样,即域名不一样。

同源还是不同源,差不多就是这个意思,只要是不同源,就需要解决”跨域“问题。

二、跨域请求

既然是跨域请求了,就分两类:1、简单请求,2、非简单请求,只要满足下面的几类,就是简单请求,否则就不是简单请求了。

(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

三、跨域流程

1、简单请求

浏览器小伙发出跨域请求,方式(Method)可能是Post,也可能是Get,再带上Headers信息,问题服务器想要一个资源,服务器一看,哦?小伙子不错,知道行内规矩。

这么着吧,你等下,给浏览器小伙发一条响应头,包含我服务器可以接受哪些请求,以什么方式等等。

然后告诉浏览器小伙,说我看看你请求的资源(包含不限于图片、css、js等静态资源,动态的另说),服务器开上自己的Apache或者Nginx小跑车,一路小跑,从这个文件夹跑到那个文件夹,收集够了浏览器小伙请求的资源后,挨个将这些资源发给浏览器小伙,浏览器小伙完成前端页面渲染和加载。

当然这个过程是极其快速及复杂的,还有Cookies、Session,Keep-live等,都需要商量,或者设置好。

总结跨域简单请求就是,一切符合服务器请求规范的,都会立马提供服务。

2、非简单请求

除了上面说的简单请求,另一个类型就是非简单请求,只要请求方式不是上面说的几种,Content-Type也不是上面说的几类,比如像自己加了Headers这些,都会触发浏览器进行非简单请求。也就是会出现Options请求。

Options请求,也叫预检请求,下面简单说说流程。

你在浏览器输入了一个网址,浏览器一看,里面有一些非简单请求的信息,于是乎本着谨慎的态度向服务器先发了一条Options的请求,试探性的问问服务器大哥这个请求可行不?

同时携带【'access-control-request-headers',access-control-request-method】等请求信息,告诉服务器想这么来。

服务器老哥一看,哟,小伙子牛啊,自定义了Headers里的信息,牛归牛,还是得按规矩来。检查了一下自己的笔记本,老板(我)允许这么请求,这个时候我们就看到了Options的响应头信息,里面有可以请求的类型,方式以及域等信息。

接下来浏览器小伙一看,知道了,就按你说的来,于是发送第二波请求,这个时候才是我们要想发送的请求,可能是Post或者Get等。

知道问题出在哪里,就有对应的解决办法了。

四、CORS跨域Post请求变OPTIONS解决办法

1、将非简单请求改为简单请求,但这个办法好像不是太可行,毕竟我们自己加了Headers,就要发挥作用。

2、将后端请求到的OPTIONS忽略,或者做些别的用处。

3、牛B的解决办法(我不是很清楚,肯定有)。

以上是我看一些对于CORS介绍的文档,根据自己的理解写的,年纪大了,也静不下心来研究其所以然了,已经错过了埋头深干的劲了,只想着赶紧解决问题,其实还是有很多问题,不是很明白。

比如,为什么浏览器要先发一次OPTIONS请求?为什么在跨域的情况下,不同的浏览器返回的信息提示不一样?

本文由 林羽凡 创作

本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名

最后编辑时间为:

corspost请求失败_vue项目CORS跨域请求500错误,post请求变options请求相关推荐

  1. 因跨域,post请求变options请求(vue)

    1.options是什么? options在此问题中属于第二种,当涉及到跨域时,并且是post请求时,本地服务器会先发送一个options请求到服务器,如果服务器认为options请求时无危险性且认可 ...

  2. 我也说说Nginx解决前端跨域问题,正确的Nginx跨域配置(后端Nginx CORS跨域配置、CORS设置,后端允许跨域请求)

    最近连续两个朋友问我跨域相关问题,我猜想可能不少朋友也遇到类似问题,我打算写个博客聊一下我实际使用的配置, 先说明一下,我并不太了解这配置,没精力去了解太多,但我觉得其中有一些关键的小注意点,可能有些 ...

  3. nginx解决浏览器跨域问题_Nginx解决前端跨域问题 CORS跨域配置

    最近连续两个朋友问我跨域相关问题,我猜想可能不少朋友也遇到类似问题,我打算写个博客聊一下我实际使用的配置, 先说明一下,我并不太了解这配置,没精力去了解太多,但我觉得其中有一些关键的小注意点,可能有些 ...

  4. CORS——跨域请求那些事儿

    [本期嘉宾介绍]睿得,具有多年研发.运维.安全等IT相关从业经历.目前从事CDN.存储.视频直播点播的技术支持.喜爱钻研,喜爱编码,喜爱分享. 在日常的项目开发时会不可避免的需要进行跨域操作,而在实际 ...

  5. Cors跨域(一):深入理解跨域请求概念及其根因

    Talk is cheap. Show me the money. 前言 你好,我是YourBatman. 做Web开发的小伙伴对"跨域"定并不陌生,像狗皮膏药一样粘着几乎每位同学 ...

  6. java重定向跨域问题_重定向 CORS 跨域请求

    TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行. 简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向. 中间服务器应当同样配置相关 COR ...

  7. HTTP中CORS跨域请求的实现(C++|Qt框架实现)

    目录 背景 关键 演示及源码 背景 HTTP中CORS跨域请求,可以获取其他服务器的数据: 这里用Qt框架实现! 逻辑如下: 浏览器访问127.0.0.1:80端口!80端口请求了127.0.0.1: ...

  8. 记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法

    记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 参考文章: (1)记一次 CORS 跨域请求出现 OPTIONS 请求的问题及解决方法 (2)https://www.cnblog ...

  9. 【Django采用cors跨域收不到POST请求】

    Django cors跨域问题 问题:只能获取GET请求,无法接收POST 在一开始简单测试的时候,没有任何问题,因为只是接受到了GET请求,然后写注册页面时候惊奇的发现,POST直接接收不到,调试界 ...

最新文章

  1. 无人驾驶定位与贝叶斯滤波
  2. maven的tomcat插件如何进行debug调试
  3. 清华微电子副所长尹首一:中国AI芯片的技术路线最全面
  4. 淘宝2011.9.21校园招聘会笔试题+答案
  5. BP神经网络算法推导
  6. php ci框架 模板输出,CodeIgniter模板引擎使用实例
  7. 【⚠️阴沟里翻船,这题都做错了!⚠️】C语言宏定义
  8. 每天一道LeetCode-----生成由[1 : n]这n个数组成的所有二叉搜索树
  9. appium 设置参数
  10. yii2框架获取刚插入数据库的id (原创)
  11. Python在线考试系统防作弊功能的思路和实现
  12. Tomcat学习总结(13)—— Tomcat常用参数配置说明
  13. python资格认证_Python怎么实现在后端的自定义认证并且实现多条件登陆
  14. 爬虫python能做什么-总算发现python爬虫能够干什么
  15. C/C++中的static和extern关键字
  16. c语言图书管理系统课设报告总结,c语言图书管理系统课设报告.docx
  17. linux 一键网克,MaxDos8下载一键Ghost|迈思工作室MaxDos工具箱下载 v8.0 官方版_最火软件站...
  18. 【书影观后感 一】大秦帝国的罗曼蒂克消亡史
  19. 新加坡政府开放数据门户网站
  20. Git develop分支的一些操作

热门文章

  1. elementui :on-remove怎么用_Vue + Vuex + Element UI实现动态全局主题颜色
  2. linux sd卡 自动挂载 mdev,mdev实现U盘和SD卡的自动挂载
  3. matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...
  4. linux用户和权限管理
  5. VS2015 error LNK2019 无法解析的外部符号 _WinMain@16,该符号在函数 int __cdecl invoke_main(void)
  6. 扫描枪读条码数据在单片机串口电路的读取与显示
  7. 关于静态联编和动态联编
  8. c读取ini配置文件_Go-INI - 超赞的Go语言INI文件操作库
  9. 链接器ld程序的脚本文件u-boot.lds(二)
  10. 语言怎么把横的光标变成竖的_想练字,先会学会控笔吧!基础都不牢,怎么练招式?...