gpt4 book ai didi

java - response.sendRedirect()给出HTTP错误: 400 BAD_REQUEST only in IE

转载 作者:行者123 更新时间:2023-12-01 05:34:05 25 4
gpt4 key购买 nike

我使用 Google App Engine (Java) 和 Google 帐户进行身份验证。

我创建了一个 servlet (processSignIn.jsp),它确保帐户因除有效 Google 帐户之外的原因(邀请已批准等)而被允许进入。如果代码计算正确,它会发出“response.sendRedirect(url)”,将用户发送到“url”参数指定的 URL。

如果用户点击此类链接:

<a href="<%= userService.createLoginURL("../processSignIn.jsp?url=" +
request.getRequestURI()) %>">Sign in with a Google Account</a>

然后使用他们的 Google 帐户登录,在 Firefox 或 Chrome 中一切正常,但在 IE 9 中则不行。请参阅下面的请求和响应。

请注意两个 GET header 之间的区别...FF 不包含“../”,但 IE 包含。我想继续使用相对路径,这样我就不必为本地开发测试做任何奇怪的事情。

可能是什么问题?

火狐请求:

GET http://www.[mydomain].com/processSignIn.jsp?url=/main.jsp HTTP/1.1
Host: www.[mydomain].com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cookie: [my cookie data]

火狐响应:

HTTP/1.1 302 Found
Content-Type: text/html
Location: http://www.[mydomain].com/main.jsp
X-AppEngine-Estimated-CPM-US-Dollars: $0.000138
X-AppEngine-Resource-Usage: ms=18 cpu_ms=0 api_cpu_ms=0
Date: Sun, 11 Dec 2011 02:58:06 GMT
Server: Google Frontend
Content-Length: 0
<小时/>

IE 9 请求:

GET http://www.[mydomain].com/../processSignIn.jsp?url=/main.jsp HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Pragma: no-cache
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Cookie: [my cookie data]
Accept-Encoding: gzip, deflate
Host: www.[mydomain].com
Connection: Keep-Alive
Cache-Control: no-cache

IE 9 响应:

HTTP/1.1 400 Bad Request
Cache-Control: must-revalidate,no-cache,no-store
Content-Type: text/html; charset=iso-8859-1
X-AppEngine-Estimated-CPM-US-Dollars: $0.001025
X-AppEngine-Resource-Usage: ms=13 cpu_ms=32 api_cpu_ms=0
Vary: Accept-Encoding
Date: Sun, 11 Dec 2011 03:00:23 GMT
Server: Google Frontend
Content-Length: 1292

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 400 BAD_REQUEST</title>
</head>
<body>
<h2>HTTP ERROR: 400</h2>
<p>Problem accessing /../processSignIn.jsp. Reason:
<pre> BAD_REQUEST</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>

最佳答案

这只能意味着生成的<a>元素的 URL 为 /../里面让MSIE和Jetty噎住了。请注意,您的 JSP/servlet 代码甚至没有被命中。由于 URI 错误,Jetty 立即阻止了该请求。

要解决错误的 URI,只需不要将上下文相对 URL 与 ../ 一起使用即可。 ,而是使用域相关 URL。在你的情况下,这将是

<a href="<%= userService.createLoginURL(request.getContextPath() 
+ "/processSignIn.jsp?url=" + request.getRequestURI()) %>">

顺便说一句,我想知道那是什么 userService.createLoginURL()应该做的。看起来并没有什么特别的作用。

关于java - response.sendRedirect()给出HTTP错误: 400 BAD_REQUEST only in IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8482520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com