問題表現
同一個專案請求同一個服務時,Get和Post請求正常,但是Put和Delete一直報跨域錯誤的問題
Access to XMLHttpRequest at 'http://127.0.0.1:8011/api/organization' from origin 'http://localhost:9527' has been blocked by CORS policy: Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
解決方案
根據問題描述,很清楚是PUT方法不行,于是去查看服務端的跨域中間件, 發現沒有在Header中明確指定Access-Control-Allow-Headers,于是添加Allow Methods的設定,, 以下是完整的跨域中間件:
package middleware
import (
"net/http"
"github.com/gin-gonic/gin"
)
func CORSMiddleware() gin.HandlerFunc {
return func(ctx *gin.Context) {
ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*")
ctx.Writer.Header().Set("Access-Control-Max-Age", "86400")
ctx.Writer.Header().Set("Access-Control-Allow-Headers", "*")
ctx.Writer.Header().Set("Access-Control-Allow-Methods", "*") //出問題是缺少這里
ctx.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
if ctx.Request.Method == http.MethodOptions {
ctx.AbortWithStatus(200)
} else {
ctx.Next()
}
}
}
反思
問題本身沒有什么,但有意思的是程序,因為我先寫的服務端,且確定加了跨域的中間件,且在寫前端的時候,之前常用的Get和Post訪問都沒有出現跨域的問題,所以問題出現時,沒有第一時間聯系到時服務端的問題,
網上查了些資訊,整體描述是因為Get和Post的方法是默認的,所以及時沒有明確設定也可以通過,但是其他的方法就需要顯示的設定,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546917.html
標籤:其他
上一篇:學習筆記——Python基礎
