这是跨域失败了吧?

这是跨域失败了吧?

我想要达到的预期结果:见红色框框

https://img1.sycdn.imooc.com//climg/6228fe5509f82dcd08360259.jpg

我自己实践运行的结果:


https://img1.sycdn.imooc.com//climg/6228fca309aa8ed422391450.jpg

https://img1.sycdn.imooc.com//climg/6228fe6d0974748625560633.jpg


问题发生的背景:

前端代码我用的是老师提供的,只是修改了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()
   }
}

由于目前只想解决跨域问题,所以返回的数据都是写死的,没有请求数据库。

我的解答思路和尝试过的方法:

前端代码是老师提供的,后端我只负责写对应的接口和返回相应的数据即可。

注册接口就是:其他的暂未实现。

https://img1.sycdn.imooc.com//climg/6229002a09631d2011510301.jpg

接口返回的数据就是按照视频的效果照做的:写死的

https://img1.sycdn.imooc.com//climg/6229007a09bbb5ea05610271.jpg

这一块完成之后,下一步就是在服务端设置跨域:

https://img1.sycdn.imooc.com//climg/622900dd09183c8015710408.jpg


依照这些思路去做,并未解决课程要求的带cookie跨域,我不知道自己是哪里 “”不知道“”,

那么我希望得到的反馈是什么?

前端还是老师提供的的代码,后端依然是go,那么后端要解决cookie的跨域问题,要分解为那几步骤呢?可以提供关键词吗?我收到回答后自己去实践。

跟后端语言应该没关系,因为解决cookie跨域的问题的思路是相通的,我可能是对这个思路的完整流程没掌握,所以我提出了这个问题,我希望能收到本章节 在后端是如何解决cookie跨域的问题的思路步骤。
最后,我的问题你觉得我描述的清楚了吗?



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

1、红色框中不能说明跨域失败了。如下位置,说明已经设置跨域了:

https://img1.sycdn.imooc.com//climg/62295a2c093b7c0612450588.jpg

2、老师不会go语言,所以无法对代码给与相应的帮助。

3、目前谷歌等浏览器,禁止了跨域携带cookie。即使代码中设置了允许跨域携带cookie,那么浏览器也会禁掉。建议同学换个浏览器测试效果,比如换成火狐、360等试试。

祝学习愉快!

  • 只是为了好玩 提问者 #1

    第三点有用,换个浏览器比如联想自带的浏览器就可以了。

    2022-03-10 15:07:31
  • 只是为了好玩 提问者 #2

    老师,如果把127.0.0.1:8081改成*(允许带cookie跨域为true的上一行配置),这种跨域方式是什么跨越方式?

    2022-03-10 15:23:01
  • 只是为了好玩 提问者 #3

    可以描述一下跨域有哪些方式?比如跨域带cookie?

    2022-03-10 15:24:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师