相信很多人寫完接口,不管是post還是get請求自己腳本去調用都是正常返回,但是到前端調用就會碰到各種各樣的問題,如下圖所展示,我這邊是python環境。
這時候有兩種改法:
第一種是把請求頭的兩個參數進行設置,修改請求頭的返回結果
Access-Control-Allow-Origin設置為http://localhost:3000
access-control-allow-credentials 設置為 true
即
'headers': {'Access-Control-Allow-Origin': 'http://localhost:3000', "access-control-allow-credentials": "true"}
但是上面那種修改之后發現可以使用了,只能是在前端的本地進行調試,換一個請求的域名,則又會報錯。比如說現在的前端環境從本地編程測試環境,你的域名“http://localhost:3000”就要變成相應測試站的域名,這樣子改來改去非常麻煩。像我每改一點東西,就要重新將代碼上傳lambda,賊麻煩。
接下來就說第二種辦法:
第二種方法:也是修改請求頭,設置如下:
'headers': {'Access-Control-Allow-Origin': '*', "access-control-allow-credentials": "true"}
但是這么設置前端調用還是會報錯,報錯的類型:Access-Control-Allow-Origin不能為 * ,當請求的證書模式為“include”時
這時候任務不是接口的問題了,而是前端一個參數的問題,只要設置成false就可以了,因為它默認是true
withCredentials: false
這時候后端前端都可以了,就可以很愉快的使用接口了,結果也可以很愉快的返回了!