corspost请求失败_vue项目CORS跨域请求500错误,post请求变options请求
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请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019小程序没必要做了_企业有必要开发
- 下一篇: stm32g474教程_STM32-开发