请问你是如何设置 etag 的?云引擎在线上的请求会经过一些负载均衡的服务器,但应该不会去修改或删除响应的 HTTP 头,你能提供一个 Url(应该返回 etag 但没有返回)供我们调试么?

是不是和跨域相关,本地掉接口时不存在跨域,发布后在掉用就是跨域调用了?

我用 curl 请求是可以看到 etag 的:

curl -I http://mankr-api-dev.leanapp.cn/products/574eaec0816dfa0067f0d7e1
HTTP/1.1 200 OK
Server: Tengine
Date: Wed, 22 Jun 2016 08:58:51 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 996
Connection: keep-alive
x-powered-by: Express
access-control-allow-origin: undefined
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept,Catch-Control,ETag
access-control-allow-credentials: true
access-control-allow-methods: GET, POST, PUT, OPTIONS, DELETE
etag: 2016-06-15T04:58:24.210Z

但是在浏览器中是没有的,请问这可能是什么原因?

如果浏览器里发了其他参数和头的话,建议在开发人员工具的 Network 选项卡里面 copy request as curl,然后再试一下。