admin管理员组

文章数量:1794759

【错误记录/html】Response to preflight request doesn‘t pass access control check: No ‘Access

【错误记录/html】Response to preflight request doesn‘t pass access control check: No ‘Access

错误详情

  • 在使用ajax向http服务器请求时,出现以下错误:Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
  • 请求如下:$.ajax({ url: "127.0.0.1/getname", type: 'GET', success: function (data) { UpdateNameInput(htmlDomInputID, data); }, error: function () { console.log("Get Rand Name Failed!"); } });
  • 服务器为golang实现
一种解决
  • 查了好多资料,尝试了好多方法,最终用了这个_StackOverflow

  • try { var xhttp = new XMLHttpRequest(); xhttp.open("GET", httpURL + httpGetName, false); xhttp.setRequestHeader("Content-type", "text/html"); xhttp.send(); alert(xhttp.response) } catch (error) { alert(error.message); }

    服务器

    func GetNameHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Access-Control-Allow-Headers", "Content-Type") randName := "NickName" fmt.Fprintf(w, randName) }

  • 注意 此种方式可能并不能完全解决 CORS: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true Request header field Access-Control-Allow-Headers is not allowed by itself in preflight response

    Request header field cache-control is not allowed by Access-Control-Allow-Headers in preflight response.
另一种方法
  • golang库-cors
  • 使用 服务器func StartHttpServer() bool { c := cors.New(cors.Options{ AllowedOrigins: []string{"*"}, }) mux := http.NewServeMux() mux.HandleFunc("/getname", GetIDHandler) handler := c.Handler(mux) http.ListenAndServe(addr, handler) return true } jsfunction GetRandName() { $.ajax({ url: "127.0.0.1/getname", type: 'GET', success: function (data) { console.log(data) UpdateNameInput(htmlDomInputID, data.id); }, error: function () { console.log("Get Rand Name Failed!"); } }); }

本文标签: 错误responsepreflightrequesthtml