登录
首页 >  Golang >  Go问答

如何使用 fetch 在本地从客户端向服务器发出请求而不得到不透明的响应?

来源:stackoverflow

时间:2024-04-15 22:57:42 200浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何使用 fetch 在本地从客户端向服务器发出请求而不得到不透明的响应?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我正在 localhost:3000 上运行 react 应用程序,并在 localhost:8000 上运行 go 服务器。

当我使用 fetch 从客户端创建 request 时 - 响应是不透明的,因此我无法访问数据。

如何发出有效的跨域请求?

客户:

componentwillmount() {
  const url = 'https://localhost:8000/api/items'
  fetch(url, { mode: 'cors' })
  .then(results => {
    return results.json()
  }).then(data => {
  let items = data;
  this.setstate({items})
  })
}

服务器:

func GetItems(w http.ResponseWriter, r *http.Request) {
    items := getItems()
    w.Header().Set("Access-Control-Allow-Origin", "*")
    json.NewEncoder(w).Encode(items)
}

据我所知 - 跨资源发出的请求应该是不透明的 - 但对于本地开发 - 如何访问 json?

查看请求类型的定义后,我发现:

cors:从有效的跨源请求收到响应。肯定 可以访问标头和正文。

我想我需要设置一个有效的跨源请求。

我明白了!

这个问题帮助解决了如何在 golang 中设置 cors:在 golang 中启用 cors

这里有 3 个关键点:

  • 将客户端请求中的模式设置为cors

  • 将服务器上的 access-control-allow-origin 标头设置为 *

  • 在客户端和 a 中对结果调用 .json() 按照承诺,您可以访问数据。

解决方案


w.Header().Set("Access-Control-Allow-Origin", "*")    
w.Header().Add("Access-Control-Allow-Headers", "Content-Type")
w.Header().Set("content-type", "application/json")

您可以尝试将它们添加到handlefunc中

到这里,我们也就讲完了《如何使用 fetch 在本地从客户端向服务器发出请求而不得到不透明的响应?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>