gpt4 book ai didi

java - 使用Java提交表单

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

我有一个 JSF 1.2 登录页面 (login.xhtml),它有 2 个子表单 - menuForm、loginForm。

使用浏览器,我可以通过单击登录表单中的“登录”按钮从登录页面导航到productList.xhtml 页面。

....

为了允许 Google 爬网程序抓取需要登录的页面,我尝试在登录表单上使用 Java 程序测试表单提交,看看是否可以检索 ProductList.xhtml 页面。

login.xhtml 页面中的隐藏字段(从浏览器查看源代码)包括以下内容:用户名密码自动滚屏登录表单登录按钮javax.faces.ViewState

我已经在我的 Java 程序中提交了上面的所有值(javax.faces.ViewState 除外),但我在响应中始终只收到 login.xhtml 页面。为什么是这样?

我无法提交 javax.faces.ViewState,因为当从 Java 程序进行提交时,服务器端没有表单的状态。如何提交还没有 View 状态的表单?

最佳答案

For allowing the Google Crawler to crawl through my pages that require login

登录需要 session (基本上:cookie)。但网络爬虫不维护 session (基本上:它们不维护cookie)。所以就到这里结束了。您必须删除登录表单并将所有导航命令链接替换为普通链接,以便让任何网络爬虫索引您的页面。

顺便说一句,我无法理解为什么您想要使受限页面可抓取(因此:公开可用)。为什么首先要登录?

<小时/>

I have submitted all the values from above (except the javax.faces.ViewState) in my Java program, but I keep getting only the login.xhtml page back in my response. Why is this?

因为您省略了 View 状态字段。 JSF 将不会处理表单提交。对于一部分来说,这是针对 CSRF 攻击的防护措施,而对于其他部分来说,这是因为 JSF 是一个基于有状态组件的 MVC 框架。

<小时/>

I cannot submit the javax.faces.ViewState because there is no state on the server-side for the form when a submit happens from the Java program. How do I submit a form that does not yet have a view state?

您需要维护 session (基本上:在后续请求中从服务器发送回所有 cookie),或者将 web.xml 中的状态保存方法设置为 client 并且您还需要将 View 状态隐藏字段与表单提交请求一起传递。

关于java - 使用Java提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670772/

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