我正在localhost:3000
上运行React应用,并在localhost:8000
上运行Go服务器。
当我使用request
从客户端创建fetch
时-响应是不透明的,因此我无法访问数据。
如何提出有效的跨域请求?
客户端:
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:Enable CORS in Golang
此处的3项关键内容:
在客户端请求中将模式设置为cors
将服务器上的Access-Control-Allow-Origin
标头设置为*
.json()
,然后在
遵循承诺,您可以访问数据。答案 0 :(得分:2)
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Add("Access-Control-Allow-Headers", "Content-Type")
w.Header().Set("content-type", "application/json")
您可以尝试将它们添加到handleFunc