输入GET Url时弹出显示空白页面

时间:2017-02-22 14:57:20

标签: spring

我有一个请求映射,它返回json中数据库的列表。如果访问者在浏览器中输入了确切的网址,页面是否会为空?

@RequestMapping(value = "/pics/{profileId}", method = RequestMethod.GET, headers = "Accept=application/json")
@ResponseBody
public List<ProfilePic> getProfilePics(@PathVariable("profileId") BigInteger profileId) {
    return practiceServices.getProfilePics(profileId);
}

如果访问者输入了网址http://localhost:8080/practiceProject/pics/10,该页面将显示该列表,但我不希望访问者看到它。我希望浏览器显示一个空页面。有可能吗?

2 个答案:

答案 0 :(得分:0)

如果您只想快速解决方案,请检查将在您的AJAX请求中发送的标头。如果这不可用,只需返回null或其他。您还可以返回ResponseEntity<List<ProfilePic>>,如果标题不存在,则使用ResponseEntity静态方法/构建器以不同的HTTP状态响应或仅使用空主体或204(无内容)。

例如,您可以检查标头X-Requested-With是否可用值XMLHttpRequest。这是使用AJAX时将发送的默认标题之一(但并非总是如此;我不确切知道它何时发送,何时不知道 - 可能取决于使用的javascript库)。

但请记住:这并不安全,有人可以伪造这些标题并访问该页面。

如果您希望完整API使用此类行为,请在检查此标头的过滤器内进行尝试,如果可用,请继续doFilter,否则请停止并回复任何内容。

答案 1 :(得分:0)

您正在返回请求正文的列表,如果您不想这样做,您应该创建一个ModelAndView对象并将对象列表添加到其中。

示例:

`@RequestMapping(value =&#34; / pics / {profileId}&#34;,method = RequestMethod.GET,headers =&#34; Accept = application / json&#34;)

public ModelAndView getProfilePics(@ PathVariable(&#34; profileId&#34;)BigInteger profileId){     ModelAndView view = new ModelAndView(&#34; html_to_be_returned&#34;);     view.addObject(&#34; list&#34;,practiceServices.getProfilePics(profileId));     返回视图 }&#39;

PS:我没有测试过这段代码,所以它也有同样的问题。