小编iva*_*arg的帖子

如何在Go服务器上处理预检CORS请求

所以我在Go中编写这个RESTful后端,它将通过跨站点HTTP请求调用,即来自另一个站点服务的内容(实际上,只是另一个端口,但同源策略启动,所以我们这里) .

在这种情况下,用户代理在某些情况下会发送预检OPTIONS请求,以检查实际请求是否可以安全发送.

我的问题是如何在Go环境中最好地处理和充分响应这些预检请求.我设想的方式并不是很优雅,我想知道是否有其他方法可以解决这个问题.

使用标准net/http包,我可以检查处理程序func中的请求方法,也许是这样的:

func AddResourceHandler(rw http.ResponseWriter, r *http.Request) {
  switch r.Method {
  case "OPTIONS":
    // handle preflight
  case "PUT":
    // respond to actual request
  }
}
Run Code Online (Sandbox Code Playgroud)

我也可以使用Gorilla的 mux包,并为每个相关的URL路径注册预检"OPTIONS"处理程序.

r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
Run Code Online (Sandbox Code Playgroud)

也许对这个问题的回答很简单:是的,这些是你的基本选择.但我认为可能有一些最好的做法,我不知道.

go cors preflight

33
推荐指数
4
解决办法
2万
查看次数

离开字段的 yasnippet 条件转换

我正在编写一个片段(用于 Go)并且希望在我移动到下一个字段时有条件地转换一个字段。具体来说,如果我保持未编辑状态,我希望该字段为空,如果我保持编辑状态,则将其括在括号中。

我不成功的片段,表达了我想要的但未能转换已编辑的字段:

func ${1:$$(when (and yas-modified-p yas-moving-away-p) 
             (concat "(" yas-text ")"))} FuncName
Run Code Online (Sandbox Code Playgroud)

我想要的是,t Type在该字段中键入时,代码段将扩展为:

func (t Type) FuncName
Run Code Online (Sandbox Code Playgroud)

当跳过未编辑的字段时,它会像这样展开:

func FuncName
Run Code Online (Sandbox Code Playgroud)

我知道条件按预期执行,因为如果我更改(concat ...)(message "XXX"),我会看到打印在迷你缓冲区中的跟踪,但我不知道为什么我的转换不起作用。

emacs yasnippet

5
推荐指数
1
解决办法
746
查看次数

用于BigQuerySink的bigquery.TableSchema的JSON表模式

我有一个以JSON格式定义的非平凡的表模式(涉及嵌套和重复的字段)(具有名称,类型,模式属性)并存储在文件中.它已成功用于使用bq load命令填充bigquery表.

但是当我尝试使用Dataflow Python SDK和BigQuerySink做同样的事情时,schema参数需要是以逗号分隔的'name':'type'元素列表或bigquery.TableSchema对象.

是否有任何方便的方法来获取我的JSON模式bigquery.TableSchema,或者我是否必须将其转换为name:value列表?

python google-cloud-dataflow

3
推荐指数
3
解决办法
3060
查看次数

标签 统计

cors ×1

emacs ×1

go ×1

google-cloud-dataflow ×1

preflight ×1

python ×1

yasnippet ×1