这是跨域失败了吧?
我想要达到的预期结果:见红色框框
我自己实践运行的结果:
问题发生的背景:
前端代码我用的是老师提供的,只是修改了HOST为192.168.8.102:3000。
后端是用go写的,目前只写了一个注册接口。
问题相关主要代码如下:
main.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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积分~
来为老师/同学的回答评分吧