0

处理 cors 连接时是否可以在管道工中设置 cookie?

我有一个角度应用程序(比如在 localhost:4200 上运行)和管道工 api(比如在 localhost:8000 上),只是尝试使用文档中的示例代码:

#* @get /sessionCounter
function(req){
  count <- 0
  if (!is.null(req$session$counter)){
    count <- as.numeric(req$session$counter)
  }
  req$session$counter <- count + 1
  return(paste0("This is visit #", count))
}

我在 rooter 上注册了 sessionCookie() 钩子,所以当我在浏览器中访问 localhost:8000/sessionCounter 时这有效,但不是从 Angular 应用程序。

我在这里缺少任何设置吗?

我只是res$setHeader("Access-Control-Allow-Origin", "http://localhost:4200")为服务 cors 请求而添加的,我还需要别的吗?

4

1 回答 1

0

我不确定跨 CORS 边界设置 cookie 的限制是什么,或者是否允许这样做。

但是,一种解决方法是将这两种服务托管在同一个端口上。如果您的 Angular 应用程序只是静态的,您可以让 Plumber 自己提供 HTML/JS 资产,这样您的整个应用程序都在一个端口上运行。这是一个例子:https ://github.com/trestletech/plumber/tree/master/inst/examples/06-sessions 。这是另一个使用 Plumber 托管的 Vue.js 应用程序:https ://github.com/trestletech/movies-plumber

如果这不可能,您还可以考虑将来自您托管 Angular 应用程序的“主”Web 服务器的流量代理到 Plumber - 再次在同一个端口/域上。

于 2018-01-18T15:33:44.433 回答