Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 跨HTTP重定向传递数据的选项_Java_Http_Response.redirect_Post Redirect Get_Http Redirect - Fatal编程技术网

Java 跨HTTP重定向传递数据的选项

Java 跨HTTP重定向传递数据的选项,java,http,response.redirect,post-redirect-get,http-redirect,Java,Http,Response.redirect,Post Redirect Get,Http Redirect,我正在开发一个Web应用程序,需要通过HTTP重定向传递数据。例如: http://foo.com/form.html 发布到 http://foo.com/form/submit.html 如果数据有问题,响应将重定向回 http://foo.com/form.html?error=Some+error+message 并在页面上显示查询参数“error”的值 是否有其他可靠的方法通过重定向(即HTTP头等)传递数据 将数据作为查询参数传递是可行的,但并不理想,因为: 它是明文(并且

我正在开发一个Web应用程序,需要通过HTTP重定向传递数据。例如:

http://foo.com/form.html 
发布到

http://foo.com/form/submit.html
如果数据有问题,响应将重定向回

http://foo.com/form.html?error=Some+error+message
并在页面上显示查询参数“error”的值

是否有其他可靠的方法通过重定向(即HTTP头等)传递数据

将数据作为查询参数传递是可行的,但并不理想,因为:

  • 它是明文(并且在查询字符串中,所以SSL不能依赖于encyrpt),所以我不想传递敏感数据
  • URI的长度受浏览器的限制(长度通常相当长)

重要提示:该平台无状态,分布在多个应用服务器上,因此我无法跟踪服务器端会话对象中的数据。我认为根据数据量,使用cookie将是一个合理的解决方案。由于您无法在服务器端跟踪它(例如,通过使用会话,这将更加简单)

我认为根据数据量,使用cookie将是一个合理的解决方案。由于您无法在服务器端跟踪错误消息(例如,使用会话,这样会更简单)

您可以将错误消息存储在服务器上的数据库中,并通过id对其进行引用:

http://foo.com/form.html?error_id=42

如果错误文本已修复,您甚至不需要使用数据库

此外,您还可以使用。您可以使用以下JavaScript显示输出页面,而不是使用“位置”标题重定向:

var error_message = "Something is wrong";
if( typeof(Storage) !== "undefined" ) {
  localStorage.error_message = error_message;
else {
  // fallback for IE < 8
  alert(error_message);
}
location.href = "new url";
var error\u message=“有问题”;
if(类型(存储)!=“未定义”){
localStorage.error\u message=错误消息;
否则{
//IE<8的回退
警报(错误信息);
}
location.href=“新建url”;

重定向后,您可以使用JavaScript读取
localStorage.error\u message
,并显示该消息。

您可以将错误消息存储在服务器上的数据库中,并通过id对其进行引用:

http://foo.com/form.html?error_id=42

如果错误文本已修复,您甚至不需要使用数据库

此外,您可以使用以下JavaScript显示输出页面,而不是使用“位置”标题重定向:

var error_message = "Something is wrong";
if( typeof(Storage) !== "undefined" ) {
  localStorage.error_message = error_message;
else {
  // fallback for IE < 8
  alert(error_message);
}
location.href = "new url";
var error\u message=“有问题”;
if(类型(存储)!=“未定义”){
localStorage.error\u message=错误消息;
否则{
//IE<8的回退
警报(错误信息);
}
location.href=“新建url”;

重定向后,您可以使用JavaScript读取
localStorage.error\u消息并显示该消息。

从客户机-服务器交互的角度来看,这是服务器内部调度问题

浏览器并不意味着根据以下内容自动重新发布初始请求的实体:“当且仅当第二个请求中使用的方法是GET或HEAD时,所需操作可由用户代理执行,而无需与用户交互。”

如果还没有,则将
form.html
设置为动态,使其成为html静态文件。将
POST
请求发送到自身,并在出现错误时预填充值。或者,如果出现问题,您可以使用与
form.html
相同的模板

它的明文(和)在查询字符串中,因此不能依赖SSL 所以我不想传递敏感数据


我不确定问题出在哪里。您仍在通过纯HTTP提交所有内容。Cookie、查询参数和请求实体都将可见。使用,尽管查询参数可能仍然是浏览器历史记录和服务器日志的问题(这不是连接的一部分,这是TLS保护的).

从客户机-服务器交互的角度来看,这是一个服务器内部调度问题

浏览器并不意味着根据以下内容自动重新发布初始请求的实体:“当且仅当第二个请求中使用的方法是GET或HEAD时,所需操作可由用户代理执行,而无需与用户交互。”

如果还没有,则将
form.html
设置为动态,使其成为html静态文件。将
POST
请求发送到自身,并在出现错误时预填充值。或者,如果出现问题,您可以使用与
form.html
相同的模板

它的明文(和)在查询字符串中,因此不能依赖SSL 所以我不想传递敏感数据


我不确定问题出在哪里。您仍在通过纯HTTP提交所有内容。Cookie、查询参数和请求实体都将可见。使用,尽管查询参数可能仍然是浏览器历史记录和服务器日志的问题(这不是连接的一部分,这是TLS保护的).

Cookie也是不安全的。它们以纯文本形式传递。同意,我没有注意到这一点。但我认为没有任何方法可以安全地将数据传递到客户端,除非您使用encription。可能会将信息存储在用户会话(或上述数据库)中这将是一个更好的解决方案。cookie值可以加密,因此只能使用纯base64文本passed@ArneBurmeisterbase64本身是编码而不是加密。当然,它可能是加密内容的base64编码。Cookie可以通过HTTPS进行安全保护,因为它们是通过HTTP请求头传递的。我在发布并查看之后想到了这一点一种基于Cookie的机制——尽管大多数Cookie的站点限制也为4KB——在现实世界中,这对于非常大的表单来说应该足够了。Cookie也是不安全的。它们以纯文本形式传递。同意,我没有注意到这一点。但我认为没有任何方法可以安全地将数据传递到客户端,除非您使用encrip也许在用户会话(或上面提到的数据库)中存储信息会是一个更好的解决方案