我使用带有GET方法的JQuery进行了ajax调用(JSONP)。我想因为我使用GET,它会将url与浏览器历史记录中的参数一起保留。那么,如何让它不保存在浏览器历史记录中呢?
将Jquery.ajax属性“cache”设置为false吗?
请咨询。
感谢所有答案&想法
我询问历史事件的原因是我使用ajaxp进行登录(使用密码)。我的PM非常担心在历史中留下痕迹(默认情况下或类似萤火虫)。 因此,我想知道如何处理它。当然,现在我意识到浏览器默认不会跟踪ajaxp,但任何插件都可能留下痕迹。
最后,我的解决方案是:
1)设置没有缓存的服务器响应。
2)我做了两次旅行。第一个ajax向服务器询问密钥和值,然后JS使用该值加密数据,并在第二次调用中使用密钥发回加密数据。 JS将删除该值(或者将其保留在回调闭包中)。服务器将使用密钥从数据库(或服务器缓存,我实际上使用mongodb)中检索值。然后使用该值来解密数据并获取登录信息。密码。
谢谢你们。
答案 0 :(得分:2)
您可以将服务器端脚本设置为发送禁止浏览器和代理缓存页面的标头:
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
上述标题是从PHP manual for session_cache_limiter复制的。
答案 1 :(得分:1)
我认为因为我使用GET,它会将url与浏览器历史记录中的参数一起保留
历史和缓存是不同的概念。 Ajax请求未记录在浏览器历史记录中。甚至有plugins允许您通过操作URL的哈希部分来实现此目的。
就缓存而言,浏览器可能确实缓存了GET请求。 cache: false
属性禁用缓存,并确保命中服务器以获取资源的新版本。
答案 2 :(得分:1)
呼叫不会出现在浏览器历史记录中,也不会影响后退/前进按钮。
如果您的目的是阻止用户查找有关呼叫(URL,数据等)的信息,那么您仍然运气不好,因为他们可以通过查看页面来源或监控网络流量来找到它(例如使用Firebug)。