1+ package org .joychou .controller ;
2+
3+ import org .springframework .stereotype .Controller ;
4+ import org .springframework .web .bind .annotation .*;
5+ import javax .servlet .http .HttpServletRequest ;
6+ import javax .servlet .http .HttpServletResponse ;
7+ import org .joychou .utils .Security ;
8+
9+ /**
10+ * @author: JoyChou
11+ * @date: 2018年10月24日
12+ * @desc: 只要Access-Control-Allow-Origin为*,或者可被绕过,就存在CORS跨域
13+ */
14+
15+ @ Controller
16+ @ RequestMapping ("/cors" )
17+ public class CORS {
18+
19+ protected static String info = "{\" name\" : \" JoyChou\" , \" phone\" : \" 18200001111\" }" ;
20+ protected static String [] urlwhitelist = {"joychou.com" , "joychou.me" };
21+
22+ /**
23+ *
24+ * @param request
25+ * @param response
26+ * @desc: 当origin为空,即直接访问的情况下,response的header中不会出现Access-Control-Allow-Origin
27+ */
28+ @ RequestMapping ("/vuls1" )
29+ @ ResponseBody
30+ private static String vuls1 (HttpServletRequest request , HttpServletResponse response ) {
31+ // 获取Header中的Origin
32+ String origin = request .getHeader ("origin" );
33+
34+ response .setHeader ("Access-Control-Allow-Origin" , origin ); // 设置Origin值为Header中获取到的
35+ // response.setHeader("Access-Control-Allow-Methods", "POST, GET");
36+ // response.setHeader("Access-Control-Allow-Credentials", "true"); // cookie
37+ return info ;
38+ }
39+
40+ @ RequestMapping ("/vuls2" )
41+ @ ResponseBody
42+ private static String vuls2 (HttpServletResponse response ) {
43+ response .setHeader ("Access-Control-Allow-Origin" , "*" );
44+ // response.setHeader("Access-Control-Allow-Methods", "POST, GET");
45+ // response.setHeader("Access-Control-Allow-Credentials", "true");
46+ return info ;
47+ }
48+
49+ @ RequestMapping ("/sec" )
50+ @ ResponseBody
51+ private static String seccode (HttpServletRequest request , HttpServletResponse response ) {
52+ String origin = request .getHeader ("Origin" );
53+ Security sec = new Security ();
54+ if (!sec .checkSafeUrl (origin , urlwhitelist )) {
55+ return "Origin is not safe." ;
56+ }
57+ response .setHeader ("Access-Control-Allow-Origin" , "*" );
58+ // response.setHeader("Access-Control-Allow-Methods", "POST, GET");
59+ // response.setHeader("Access-Control-Allow-Credentials", "true");
60+ return info ;
61+ }
62+
63+
64+ }
0 commit comments