【问题标题】:setting cookies with CORS requests in plumber在管道工中使用 CORS 请求设置 cookie
【发布时间】:2018-01-18 11:42:51
【问题描述】:

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

我有一个 Angular 应用程序(比如在 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 请求,我还需要别的吗?

【问题讨论】:

    标签: cors plumber


    【解决方案1】:

    我不确定在跨 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 应用程序的“主”网络服务器的流量代理到 Plumber - 再次在同一端口/域上。

    【讨论】:

    • 谢谢艾伦,我现在可能只是在响应中发送一个令牌,然后将它包含在每个请求中。希望我能弄清楚如何包含 http 标头:) 稍后我会玩这个,我只是在检查现在有什么可能。
    猜你喜欢
    • 2016-07-21
    • 2012-04-26
    • 2012-12-22
    • 2018-04-28
    • 2012-06-12
    • 2017-09-28
    • 2014-02-08
    • 2017-08-05
    • 1970-01-01
    相关资源
    最近更新 更多