当前位置: 首页 > 知识库问答 >
问题:

如何解决本地系统上的Cors问题?

吕皓
2023-03-14

我正在开发一个非常基础的web应用程序,其中服务器运行在localhost:12345上,客户端运行在localhost:3000上。我这样做是因为,我写了一个实际的应用程序,在生产中存在cors问题。所以我开始深入到基础并解决这个问题。但是我失败了。我的后端正在运行。这是第一个html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>This is page1</title>
  </head>
  <body>
    Hi this is page1

    <a href="index2.html" id='link'>About this web app</a>
  </body>



</html>

这是第二个 html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript" src='jquery.js'>

    </script>
  </head>
  <body>
    This is page2
  </body>
  <script type="text/javascript">
    $.ajax({
      type: 'GET',
      url: 'http://localhost:12345/people',
      contentType: 'application/json',
      success: function(response){
        alert(response);
      },
      error: function(err){
        alert(JSON.stringify(err));
      }
    })
  </script>
</html>

最后是后端代码:

package main

import (
    "encoding/json"
    "log"
    "net/http"
    "fmt"
    "github.com/gorilla/mux"
    "github.com/gorilla/handlers"
)

type Person struct {
    ID        string   `json:"id,omitempty"`
    Firstname string   `json:"firstname,omitempty"`
    Lastname  string   `json:"lastname,omitempty"`
    Address   *Address `json:"address,omitempty"`
}

type Address struct {
    City  string `json:"city,omitempty"`
    State string `json:"state,omitempty"`
}

var people []Person

func GetPersonEndpoint(w http.ResponseWriter, req *http.Request) {
    params := mux.Vars(req)
    for _, item := range people {
        if item.ID == params["id"] {
            json.NewEncoder(w).Encode(item)
            return
        }
    }
    json.NewEncoder(w).Encode(&Person{})
}


func GetPeopleEndpoint(w http.ResponseWriter, req *http.Request) {
    json.NewEncoder(w).Encode(people)
}

func CreatePersonEndpoint(w http.ResponseWriter, req *http.Request) {
    params := mux.Vars(req)
    var person Person
    _ = json.NewDecoder(req.Body).Decode(&person)
    person.ID = params["id"]
    people = append(people, person)
    json.NewEncoder(w).Encode(people)
}

func DeletePersonEndpoint(w http.ResponseWriter, req *http.Request) {
    params := mux.Vars(req)
    for index, item := range people {
        if item.ID == params["id"] {
            people = append(people[:index], people[index+1:]...)
            break
        }
    }
    json.NewEncoder(w).Encode(people)
}

func main() {
    router := mux.NewRouter()
    people = append(people, Person{ID: "1", Firstname: "Nic", Lastname: "Raboy", Address: &Address{City: "Dublin", State: "CA"}})
    people = append(people, Person{ID: "2", Firstname: "Maria", Lastname: "Raboy"})
    fmt.Println( people);
    router.HandleFunc("/people", GetPeopleEndpoint).Methods("GET")
    router.HandleFunc("/people/{id}", GetPersonEndpoint).Methods("GET")
    router.HandleFunc("/people/{id}", CreatePersonEndpoint).Methods("POST")
    router.HandleFunc("/people/{id}", DeletePersonEndpoint).Methods("DELETE")

   headersOk := handlers.AllowedHeaders([]string{"X-Requested-With"})
originsOk := handlers.AllowedOrigins([]string{os.Getenv("ORIGIN_ALLOWED")})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})

// start server listen
// with error handling
log.Fatal(http.ListenAndServe(":" + os.Getenv("PORT"), handlers.CORS(originsOk, headersOk, methodsOk)(router)))
}

共有1个答案

廖永长
2023-03-14

好的,上述问题的解决方案在此链接 Go Cors 处理程序。它确实起到了作用。

 类似资料:
  • 本文向大家介绍如何解决windows系统和linux系统中端口被占用的问题,包括了如何解决windows系统和linux系统中端口被占用的问题的使用技巧和注意事项,需要的朋友参考一下 一、在windows操作系统中,查询端口占用和清除端口占用的程序 提升权限后用:netstat -b 或用 1、查询端口占用的进程ID          点击"开始"-->"运行",输入"cmd"后点击确定按钮,进入

  • 我想知道是否可以从客户端解决这个问题,因为我在内部没有任何访问API的权限。 有人能帮我解决这个问题吗? 以下是newsactions.js的代码: 如果您需要更多的信息或有问题,请在下面评论。 谢谢你。

  • 我已经部署了我的第一个netlify站点,它只是从airtable返回一些记录: https://codefy-airtable.netlify.app/.netlify/functions/courses 它也适用于我设置的重定向:- https://codefy-airtable.netlify.app/api/courses 然而,当我在webflow中将axios get函数添加到我的头脚

  • 嗨,我在我的react应用程序中使用axios模块,我使用像这样的api POST方法

  • CSRF提示 AMH » CSRF 当前amh系统的面板设置已开启CSRF攻击防范 您当前请求数据验证失败已被拒绝 请求被拒绝的可能 1) 外部非法请求 amh_token 参数错误。 2) 请求数据缺少 amh_token 参数。 3) 面板页面 Javascript 脚本未加载完成时发起请求 amh_token 数据未载入。 无 1

  • 数据库: db2, 应用程序服务器: 网络球体 8 我们有 rest 服务,用于更新/检索数据库中的值。这项服务每天最多使用两次。因此,其余呼叫之间的时间段几乎是24小时。 对于每一个第一/第二个请求,它都会抛出异常。第三次重试成功。 执行了以下链接中指定的所有内容。 如何处理陈旧的连接? http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.j

  • 本文向大家介绍详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决,包括了详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决的使用技巧和注意事项,需要的朋友参考一下 最近遇到一个问题,用 Vue 开发的项目在最近两年新出的安卓手机上没问题,在三四年前的旧手机上出现白屏问题。分析一下应该是安卓系统版本的原因,目前已知的是Android 6.0 以上都 OK,6.0 以下就不行了