axios不发送POST给golang api

时间:2017-11-15 13:55:39

标签: go cors axios negroni

我有一个带有negroni中间件的golang api后端。

我已经为negroni实现了CORS处理程序,所以我的api应该允许跨源资源共享。

// allow OPTIONS method of CORS requests
c := cors.New(cors.Options{
    AllowedOrigins: []string{"http://127.0.0.1"},
})

//common.StartUp() - Replaced with init method
// Get the mux router object
router := routers.InitRoutes()
// Create a negroni instance
n := negroni.Classic()
n.Use(c)
n.UseHandler(router)

server := &http.Server{
    Addr:    common.AppConfig.Server,
    Handler: n,
}
log.Println("Listening...")
server.ListenAndServe()

这是使用negroni实现CORS的https://github.com/rs/cors/blob/master/examples/negroni/server.go示例。

然而,我的api现在将200状态回复到我的前端,但是前端不会将POST请求发送到服务器。这是我的公理代码:

import axios from 'axios';
const data = {
email: 'user@mail.com',
password: 'secret',
};

export default {
name: 'Login',
methods: {
login() {
  axios.post('https://127.0.0.1:8090/users/login', data);
},

enter image description here Postman在发送POST请求时没有任何问题。我做错了什么?

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决问题的方法:

正如this文章中所述,我为cors negroni插件添加了更多选项。我的应用程序中缺少的一个重要选项是行

AllowedHeaders: []string{"X-Auth-Key", "X-Auth-Secret", "Content-Type"},

因为我的应用程序发送了Content-Type标头,api拒绝了它。

我希望这能帮助其他有类似问题的人。