
【错误记录/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!"); } }); }
👁️ 阅读量:0
© 版权声明:本文《【错误记录html】Response to preflight request doesn‘t pass access control check: No ‘Access》内容均为本站精心整理或网友自愿分享,如需转载请注明原文出处:https://www.zastudy.cn/wen/1686960120a409127.html。