通过 curl/raw http 从 JSF 页面访问启用 js 的"links"



我想知道如何访问这个网站上的内容:https://handbook.unimelb.edu.au/

我可以通过浏览器手动执行搜索,并且我通过http live Headers跟踪原始http请求,但是在计算系统如何实际执行搜索时存在无尽的问题。

特别是,使用高级搜索通过:https://handbook.unimelb.edu.au/faces/htdocs/user/search/AdvancedSearch.jsp

会发送类似以下的数据: POST /faces/htdocs/user/search/AdvancedSearch.jsp HTTP/1.1 AdvancedSearchForm%3Akeywords=&AdvancedSearchForm%3ACourseOrSubjectSelection=SUBJECT_ALL&AdvancedSearchForm%3AGraduateLevelSelection=POSTGRADUATE_ALL&AdvancedSearchForm%3AfacultyList=&AdvancedSearchForm%3AdepartmentList=&AdvancedSearchForm%3Alevel=ALL&AdvancedSearchForm%3Asemester=ALL&AdvancedSearchForm%3AallStudyAreas=t&oracle.adf.faces.FORM=AdvancedSearchForm&oracle.adf.faces.STATE_TOKEN=_id51018%3A_id51019&source=AdvancedSearchForm%3AsearchButton

服务器立即响应"HTTP/1.1 302临时移动"并重定向到"Location: https://handbook.unimelb.edu.au/faces/htdocs/user/search/SearchResults.jsp"

实际显示搜索结果。

据我所知,搜索本身必须使用会话来存储post和随后的get之间的搜索项。

这是正常的JSF行为吗?进入这样一个系统有什么诀窍吗?

这是正常的JSF行为吗?

这种行为不"正常"。然而,这种方法对于遗留的JSF 1来说是可以解释的。x应用程序;这是因为JSF 1.x本身不支持GET表单。然而,我认为这种方法的设计相当糟糕,并建议使用<managed-property>注入GET请求参数。web应用架构师/开发人员很可能没有真正考虑得很好。请注意,自从JSF 2.0以来,由于新的<f:viewParam>标记,使用纯HTML <form>的GET表单得到了本机支持。


访问这样的系统有什么技巧吗?

告诉您的HTTP客户端维护会话(读取cookie)并自动跟踪重定向。默认情况下,JSF已经严重依赖会话,因为它也将视图状态存储在会话中。这反过来又与web应用程序的设计方式无关。

参见:

  • 我如何以编程方式上传文件到网站?-如何正确地以编程方式提交基于JSF的表单的相关答案。

最新更新