这是跨域失败了吧?
我想要达到的预期结果:见红色框框
我自己实践运行的结果:
问题发生的背景:
前端代码我用的是老师提供的,只是修改了HOST为192.168.8.102:3000。
后端是用go写的,目前只写了一个注册接口。
问题相关主要代码如下:
main.go
func main() { router := gin.Default() router.Use(middlewares.Cors()) router.POST("/users/register",func(c *gin.Context){ username := c.PostForm("username") age := c.DefaultPostForm("age","anonymous") res_data := map[string]interface{}{ "_id":"18888888888", "username":username, "password":"123", "age":age, "city":"北京", "gender":1, "createdAt":"2020-0416T08:00:12.725Z", "updatedAt":"2020-0416T08:00:12.725Z", } c.JSON(http.StatusOK,gin.H{ "errno":0, "data":res_data, }) }) router.Run("192.168.8.102:3000") }
middleware/cors.go
func Cors() gin.HandlerFunc { return func(c *gin.Context) { method := c.Request.Method c.Header("Access-Control-Allow-Origin", "http://192.168.8.133:8080") // Origin, Accept, Authorization") c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, X-Requested-With,Authorization, Token, x-token,Origin, Accept, Authorization") // 告诉浏览器你有哪些方法可以使用 c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PATCH, PUT") c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type") c.Header("Access-Control-Allow-Credentials", "true") if method == "OPTIONS" { c.AbortWithStatus(http.StatusNoContent) } c.Next() } }
由于目前只想解决跨域问题,所以返回的数据都是写死的,没有请求数据库。
我的解答思路和尝试过的方法:
前端代码是老师提供的,后端我只负责写对应的接口和返回相应的数据即可。
注册接口就是:其他的暂未实现。
接口返回的数据就是按照视频的效果照做的:写死的
这一块完成之后,下一步就是在服务端设置跨域:
依照这些思路去做,并未解决课程要求的带cookie跨域,我不知道自己是哪里 “”不知道“”,
那么我希望得到的反馈是什么?
前端还是老师提供的的代码,后端依然是go,那么后端要解决cookie的跨域问题,要分解为那几步骤呢?可以提供关键词吗?我收到回答后自己去实践。
跟后端语言应该没关系,因为解决cookie跨域的问题的思路是相通的,我可能是对这个思路的完整流程没掌握,所以我提出了这个问题,我希望能收到本章节 在后端是如何解决cookie跨域的问题的思路步骤。
最后,我的问题你觉得我描述的清楚了吗?
正在回答
同学你好,解答如下:
1、红色框中不能说明跨域失败了。如下位置,说明已经设置跨域了:
2、老师不会go语言,所以无法对代码给与相应的帮助。
3、目前谷歌等浏览器,禁止了跨域携带cookie。即使代码中设置了允许跨域携带cookie,那么浏览器也会禁掉。建议同学换个浏览器测试效果,比如换成火狐、360等试试。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星