小编Mik*_*ynn的帖子

如何在ESI中设置cookie:include脚本?

我有一个基本的PHP页面通过Varnish加载,其中包含一个ESI回调服务器来设置cookie.cookie是通过域访问等设置的,但是当通过ESI调用时,cookie永远不会被设置.如果直接访问ESI包含路径,则cookie设置没有问题.我甚至设置了我的Varnish配置永远不会缓存任何东西,认为VCL可能会杀死cookie.

这个...

<esi:include src="/init.php?<?=http_build_query($_GET); ?>"></esi:include>
Run Code Online (Sandbox Code Playgroud)

......包括这个......

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

setcookie('superman', 'clark kent', 0, '/', '.whatever.com');

?>
Run Code Online (Sandbox Code Playgroud)

我是Varnish和ESI的新手,所以我开始怀疑这是否是一个已知的限制(使用ESI或使用Varnish的ESI实现),但我在网上找不到任何关于我的问题的讨论.

php cookies varnish edge-side-includes

8
推荐指数
1
解决办法
3513
查看次数

如何在Clojure中将二进制文件的内容读入字符串?

我正在使用Compojure在Clojure中创建一个静态文件服务器,我一直在从文件系统读取图像并通过Compojure路径显示该图像.

不幸的是,slurp并不能很好地处理二进制数据,而且我已经尝试过这100种不同的方法,但这是我最近的失败尝试:

(defn image-output [filepath]
  (try
    (let [contents (apply str (with-open [rdr (io/reader filepath)]
      (into #{} (line-seq rdr))))]
      {
        :status 200
        :headers 
        {
          "Content-Type" "image/jpeg", 
          "Content-Length" "",
          "Cache-Control" "",
          "Expires" ""
        }
        :body contents
      }))
    (catch Exception e {:status 404})))

(defn endpoint_view [params]
  (if (contains? params :bucket)
    (image-output (join "/" [data_path (:bucket params) (:dir params) (:filename params)]))))

(defroutes main-routes
  (GET "/view/:bucket/:dir/:filename" {params :params} (endpoint_view params))
  (route/files "/")
  (route/resources "/s" {:root "./public/s"})
  (route/not-found "Page not found"))
Run Code Online (Sandbox Code Playgroud)

看起来这个当前的尝试遭遇与使用slurp相同的命运,在那里我可以回显内容字符串以及它和编码的字符串,但是当我将内容类型更改为image/jpeg时,它是一个破碎的图像.

我昨天花了整整一天时间进行谷歌搜索,但是没有一个例子能够达到同样的目标,虽然它们帮助我更多地了解了Java IO,但是它们还不够清晰,无法帮助我到达我需要去的地方,或者生产了我已经得到了相同的结果(例子:在Clojure中将文件内容读入集合的最佳方法). …

clojure

6
推荐指数
1
解决办法
820
查看次数

通过Google Chrome App Webview冒泡通知

我有一个谷歌Chrome打包应用程序,并使用webview标记加载远程页面(我无法控制).该远程页面正在尝试请求通知权限,并且权限请求似乎没有冒泡到包装Chrome应用程序.

我正在使用以下(过度宽松)代码来允许来自webview的所有权限请求(并回显所有控制台输出):

  webview.addEventListener('permissionrequest', function(e) {
    console.log("webview requested " + e.permission);
    e.request.allow();
  });

  webview.addEventListener('consolemessage', function(e) {
    console.log('From webview: ', e.message);
  });
Run Code Online (Sandbox Code Playgroud)

我在网上找不到确认,但我认为网页浏览中尚不允许通知权限.如果我们假设是这种情况,是否还有其他方法可以强制Webview的网站通知权限不会被CORS阻止?

javascript webview google-chrome-app google-chrome-webview

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

从Clojure中的复杂列表中提取值

我试图从复杂的列表结构中提取值.

鉴于这样的事情:

[{:a "whatever" :b [:c "foo"]} :e {:f "boo"} :g {:h [:i 62281]}]
Run Code Online (Sandbox Code Playgroud)

我想得到:

["whatever" "foo" "boo" 62281]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只是到了这一步:

((62281) nil (boo) nil whatever foo)
Run Code Online (Sandbox Code Playgroud)

这是代码:

(defn get-values [params]
  (apply conj
         (map (fn [part]
                (if (not (keyword? part))
                    (map (fn [v]
                           (if (vector? v)
                               (last v)
                               v))
                         (vals part))))
              params)))
Run Code Online (Sandbox Code Playgroud)
  1. 我似乎无法摆脱零
  2. 我无法弄清楚为什么某个点之后的值在列表中.
  3. 我认为必须有一个更好的方法来做到这一点.

clojure

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