javascript Cookie未设置到期日期

时间:2019-05-16 13:07:51

标签: javascript cookies

我在JavaScript中使用cookie来记住地图上的最后位置,但是我只是意识到即使添加了cookie,cookie也会错过过期日期。

您可以在此处测试代码

https://www.traffwebdemo.co.uk/parking/basic.html

这是我的代码,由于某种原因,唯一接受过期日期(并且在我检查Cookie时实际上存在)的是Opera,其他浏览器似乎错过了过期日期,或者他们说在会话(FF)上过期

const setUserPrefs = (mapView) => {
  let cookieStr
  const curZ = mapView.getView().getResolution()
  const mapCen = mapView.getView().getCenter()
  const expdate = new Date()

  // set expire date to one week
  expdate.setTime(expdate.getTime() + (7 * 24 * 60 * 60 * 1000))

  cookieStr = `#${mapCen[0]}#${mapCen[1]}#${curZ}`

  document.cookie = `traffweb${window.location.href}= ${escape(cookieStr)}, expires=${expdate.toUTCString()} path=/`
}

如何使此代码有效?

如果我使用encodeURIComponent(document.cookie);是的,我有cookie的到期日,但是如果我进入开发工具中的应用程序,就没有了,并且我不需要检查是否已设置,或者说实话,只需关闭浏览器并在同一链接中重新打开它,地图就可以不在同一位置,它仅在会话中起作用。

1 个答案:

答案 0 :(得分:1)

绝对不要设置自己的cookie。使用经过测试的库,例如https://github.com/js-cookie/js-cookie-您的内容会破坏Cookie

<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

使用

let cookieName = location.href.split("/").slice(-2); 
cookieName.pop(); // get rid of file name
const curZ = mapView.getView().getResolution()
const mapCen = mapView.getView().getCenter()
let cookieStr = `#${mapCen[0]}#${mapCen[1]}#${curZ}`
Cookies.set("traffweb"+cookieName, cookieStr , { expires: 7, path: '/' });