在2个HTTP请求之间保留数据的最佳方法

时间:2017-08-21 10:46:25

标签: javascript php http session parameters

我有一个Web应用程序,它有一个搜索表单。用户将其查询字符串输入到输入字段中,并使用提交按钮提交表单。 接下来,“结果”页面显示搜索结果。

结果页面有一个"无休止的滚动"特征。这意味着,当到达页面末尾时,现在会加载结果。 所以我必须使用相同的查询字符串将第二个查询发送到搜索引擎。

目前,我看到以下选项:

1。)使用session-Parameter:

第一个搜索请求(来自搜索表单)将所有搜索参数(包括用户的查询字符串)存储在会话存储中,并且"无限滚动" -javascript函数只调用"搜索" - 没有任何额外GET参数的URL

Pro:没有直接的XSS问题(?)

Contra:用户通常需要通过执行操作从session参数中显式重置其搜索/删除查询字符串。

2。)在结果页面中回显查询字符串:

在生成搜索结果页面期间,用户的查询字符串被渲染到网页中。例如,在隐藏字段中或作为javascript参数。因此,javascript可以获取此查询字符串并将其用作查询参数或使用ajax提交表单。

Pro:当重新进入页面时,没有从会话存储中加载旧的搜索数据 - 它对用户来说更透明。否" reset-session-search-parameter"机制是必要的

反对:即使HTML被编码,它可能对XSS很脆弱......(?)

我的问题: a。)这些正确和反对的假设是正确的吗? b。)你会解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果你正在进行无休止的滚动,你的页面肯定会有一些javascript,所以我会做类似以下的事情:

将搜索查询从服务器传递到页面内容,如:

<script type="application/json" id="current-filter">
{query: "search for me"}
</script>

触发滚动evet时,请阅读过滤器并发送请求:

var filter = JSON.parse(document.getElementById('current-filter').innerHTML);
// send the form