Jal*_*Jal 3 javascript cookies go
我正在尝试测试我是否在域 A 中,域 A 客户端可以将域 B cookie 发送到域 B。
这是我的 golang 代码
package main
import (
"fmt"
"net/http"
"log"
"time"
"encoding/json"
)
func setCookie(w http.ResponseWriter, r *http.Request) {
expiration := time.Now().Add(365 * 24 * time.Hour)
cookie := http.Cookie{Path: "/test_receive_cookie", Name: "test_cors", Value: "test_cors", Expires: expiration}
http.SetCookie(w, &cookie)
fmt.Fprintf(w, "Success")
}
func receiveCookie(w http.ResponseWriter, r *http.Request) {
fmt.Println(r.Cookies())
data := make(map[string]interface{})
for _, cookie := range r.Cookies() {
data[cookie.Name] = cookie.Value
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(data)
}
func main() {
http.HandleFunc("/set_cookie", setCookie)
http.HandleFunc("/test_receive_cookie", receiveCookie)
err := http.ListenAndServe(":8012", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
Run Code Online (Sandbox Code Playgroud)
我首先点击http://localhost:8012/set_cookie,然后我使用这个库打开一个包含 javascript 的 html 文件
this._xhr.get(
"http://localhost:8012/test_receive_cookie",
{ headers: { "Access-Control-Allow-Origin": "*" }},
function(err, resp) {
console.log(resp);
console.log(err);
});
Run Code Online (Sandbox Code Playgroud)
发生了以下事情
Failed to load http://localhost:8012/test_receive_cookie: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
我的服务器打印[]自fmt.Println(r.Cookies())
如果我点击http://localhost:8012/test_receive_cookie我可以看到我设置的 cookie 在浏览器上打印出来,但是当我打开一个调用端点的 html 时,服务器将有空的 cookie
我的问题是如何将 cookie 传递回http://localhost:8012/test_receive_cookie使用客户端代码?
我是否缺少一些配置代码?
您需要 Go 服务器来发送Access-Control-Allow-Origin标头,客户端无法提供它们(请参阅CORS)。
如果您更新服务器以添加此标头,客户端将停止抛出错误。
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.Header().Set("Access-Control-Allow-Origin", "*")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9139 次 |
| 最近记录: |