-
2017-09-06 19:12:03
package network.openURL; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.MalformedURLException; import java.net.Proxy; import java.net.Proxy.Type; import java.net.URL; import java.net.URLConnection; import java.net.UnknownHostException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; /** * @ClassName: OpenUrl_Proxy * @Description:通过代理实现Java代码访问指定URL * @date: 2017年8月24日 * @修改备注: */ public class OpenUrl_Proxy { /** * @Description:HttpComponents--HttpClient方式访问指定URL * 通常是因为服务器的安全设置不接受Java程序作为客户端访问,解决方案是设置客户端的User Agent * @date: 2017年8月24日 下午7:45:14 * @修改备注: */ public static void openUrl_httpComponents(String url){ HttpClient client = HttpClients.createDefault(); HttpGet get = new HttpGet(url); try { HttpResponse response = client.execute(get); int httpStatusCode = response.getStatusLine().getStatusCode(); //由于一些设置问题,访问百度首页可能返回的httpStatusCode是403,不是200 //其原因就是可能百度服务器不支持通过代码来调用url if(HttpStatus.SC_OK == httpStatusCode){ System.out.println("打印服务器返回的状态: " + response.getStatusLine()); HttpEntity entity = response.getEntity(); if(entity != null){ System.out.println("打印返回信息:"+EntityUtils.toString(entity));//打印返回信息 //entity.consumeContent();//释放资源 EntityUtils.consume(entity);//释放资源 this is the new consume method } }else{ System.out.println("not ok"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } client.getConnectionManager().shutdown(); } /** * @Description:通过添加代理方式,实现访问指定URL * @date: 2017年8月24日 下午8:21:26 * @修改备注: */ public static void openUrl_setProxy_1(){ InetSocketAddress inetAddress = null; URL url = null; try { url = new URL("http://blog.csdn.net/qq578473688/article/details/77519742"); } catch (MalformedURLException e) { e.printStackTrace(); } try { inetAddress = new InetSocketAddress(InetAddress.getByName("192.168.80.20"), 8080); } catch (UnknownHostException e1) { e1.printStackTrace(); } URLConnection con = null; try { con = url.openConnection(new Proxy(Type.HTTP, inetAddress)); } catch (IOException e) { e.printStackTrace(); } BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String str = null; StringBuffer sb = new StringBuffer(); try { while((str = br.readLine()) != null){ sb.append(str); } } catch (IOException e) { e.printStackTrace(); } System.out.println(sb.toString()); } /** * @Description:通过添加代理方式,实现访问指定URL * 通常是因为服务器的安全设置不接受Java程序作为客户端访问,解决方案是设置客户端的User Agent * @date: 2017年8月24日 下午8:22:19 * @修改备注: */ public static void openUrl_setProxy_2(){ String host = "192.168.80.20"; String port = "8080"; setProxy(host, port); URL url = null; try { url = new URL("http://www.baidu.com/"); } catch (MalformedURLException e) { e.printStackTrace(); } InputStream is = null; try { is = url.openStream(); } catch (IOException e) { e.printStackTrace(); } BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(is, "utf-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String line = null; try { while ((line = br.readLine()) != null) { System.out.println(line); } System.out.println(url.getContent()); } catch (IOException e) { e.printStackTrace(); } } public static void setProxy(String host, String port) { System.setProperty("proxySet", "true"); System.setProperty("proxyHost", host); System.setProperty("proxyPort", port); } public static void main(String[] args) { } }
参考:http://blog.sina.com.cn/s/blog_4b6f8d1501017a5l.html
更多相关内容 -
未指定“url”属性
2021-08-09 12:17:19'url'attribute isnot specified and no embedded datasource could be configured. 原因: 编译生成target中的classes目录下没有自动生成resources目录中的资源文件。 解决办法: 第一种方式,clean之后,...之前能编译通过的文件,莫名其妙就不能运行,并报了以下错误:
'url' attribute is not specified and no embedded datasource could be configured.
原因:
编译生成target中的classes目录下没有自动生成resources目录中的资源文件。
解决办法:
第一种方式,clean之后,再compile,重新生成target目录。
第二种方式,选择这个module,鼠标右键-->选择rebuild ,重构这个module。
第三种方式,把resources目录下的资源手动复制到target的classes目录中。
-
java解决限制访问指定url
2021-04-24 17:36:53但从扫描者的角度,一旦他们认为你的后端服务接口暴露的太多,或过于明显,或没有前置的安全措施(通过登录的方式)就能拿到后台的数据,这样显然是不合理的,一旦扫出这样的接口,那么面临的一个问题就是,解决接口...前言
在web项目交付阶段,很多交付的小伙伴们会面临的一个问题就是安全漏洞扫描,关于安全漏洞问题,可以分为很多种,但从扫描者的角度,一旦他们认为你的后端服务接口暴露的太多,或过于明显,或没有前置的安全措施(通过登录的方式)就能拿到后台的数据,这样显然是不合理的,一旦扫出这样的接口,那么面临的一个问题就是,解决接口暴露的问题
关于这个问题,其实说起来,还是跟系统在一开始的规划设计阶段的安全考虑不够完备,比如你的后台项目是否需要做必要的鉴权,是否集成了第三方安全框架等,如果在项目框架搭建之初,就能考虑到这些问题,相信在后续的交付阶段,就不必担心接口的安全漏洞问题
但不管如何,一旦出现了,既然不能推倒重来,我们还必须要想办法快速补救,下面就本人在项目交付阶段的一点零碎的经验,针对这个问题,做一点技术实现方案的总结
方案1:使用过滤器
这种方式最简单,对大多数程序员来说,也最容易实现,只需要在一个自定义过滤器中,针对所有请求后端服务的url做拦截,对后端所有的URL进行分类,不同的url必须要经过什么样的校验才能通过,这种方式比较简单,就不再做代码层面的展示了
方案2:使用拦截器
先贴上代码
package com.congge.interceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor { public static Logger logger = LoggerFactory.getLogger(MyInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info("执行 preHandle:{}",request.getRequestURI()); //TODO 这里可以是token,权限等前置业务的处理...... response.getWriter().write("you have no access"); return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { logger.info("执行 preHandle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { logger.info("执行 afterCompletion"); } }
package com.congge.interceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; @Configuration public class MyWebmvcConfig extends WebMvcConfigurationSupport { @Override protected void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/user/**", "/admin/**", "/account/**") //哪些路径要拦截 .excludePathPatterns("/open/api/**"); //哪些逻辑不需要做拦截 } /** * 静态资源的访问 * @param registry */ @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**") .addResourceLocations("classpath:/static/"); registry.addResourceHandler("/templates/**") .addResourceLocations("classpath:/templates/"); super.addResourceHandlers(registry); } }
定义一个拦截器,实现HandlerInterceptor接口,在重新的方法中,编写自身校验权限,token等逻辑,如果返回false,请求直接结束,否则可以进入后续的接口资源访问,以文中的配置为例,我们分别访问一下2个接口
上面这种方式的改造成本比较小,实现难度也很小,可以作为第一选择方案3:集成shiro
相信很多小伙伴都用过shiro,shiro是一个小巧适用的安全框架,但实际上来说,在和后端项目进行集成时,很多前置的配置工作要做,而且和数据库的权限认证那一套的表结合的很紧密,如果不是在设计之初就集成的话,这个改造的难度和复杂度还是比较大的,慎用
方案4:集成spring-security
一听到spring-security,很多同学开始谈虎色变了,spring-security在后端的框架中算是比较复杂,也比较重型的框架了,学习成本是比较高的,但经过本人的研究发现,如果并不打算完全将spring-security的安全体系替换现有的代码逻辑时,可以借助其部分针对接口资源的权限控制功能,完全可以达到本篇问题的目的,下面通过2种方式来快速说明下
导入security依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
方式1:直接引用上面的依赖之后,在配置文件中做简单的配置即可
#手动设置登录用户名和密码 spring.security.user.name=admin spring.security.user.password=admin
引入依赖之后,项目启动之后,访问后端接口时,所有的请求都要经过spring-security的默认登录页面,因此上述配置文件中配置的用户名和密码即为登录的用户名和密码
当我们再次访问上面的接口时,就会弹出下面的登录页面
输入:root/root,即可正常访问接口了
但这种方式的使用场景比较有限,使用的时候请慎重考虑方式2:使用spring-security的安全配置策略
spring-security集成了很多功能,比如像权限,角色控制等,一般来说,任何系统的登录功能是必不可少的,因此可以借助系统现有的登录登录,再融入spring-security的登录认证即可满足
实现起来,主要包括如下几点,
1)自定义UserDetailsService,即实现UserDetailsService接口
@Configuration("userDetailsService") public class MyUserDetailService implements UserDetailsService { @Autowired private UserMapper userMapper; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { QueryWrapper<MyUser> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("username",username); MyUser myUser = userMapper.selectOne(queryWrapper); if(myUser==null){ throw new RuntimeException("该用户不存在"); } List<GrantedAuthority> roles = AuthorityUtils.commaSeparatedStringToAuthorityList("role"); return new User(username,new BCryptPasswordEncoder().encode(myUser.getPassword()),roles); } }
2)自定义配置类,继承WebSecurityConfigurerAdapter,根据需要重写里面的相关方法即可
@Configuration
public class MySecurityConfig extends WebSecurityConfigurerAdapter {@Autowired private MyUserDetailService userDetailService; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailService).passwordEncoder(password()); } @Bean public PasswordEncoder password() { return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin() .loginPage("/login.html") //自定义的登录界面 .loginProcessingUrl("/user/login") //登录提交的接口 .defaultSuccessUrl("/zcy/index").permitAll() //登录成功之后默认的跳转路径 .and().authorizeRequests() //自定义受保护的URL资源 .antMatchers("/","/user/login","/open/api/**") .permitAll() //设置那些URL路径可以直接访问,不需要认证 .anyRequest().authenticated() //除了上面其他的URL资源都受保护 .and() .csrf().disable(); //关闭CSRF防护 }
}
关于上面的这段配置,相信的使用说明,有兴趣的同学可以参考我的专栏文章:spring-security
总体的逻辑就是,在自定义的MyUserDetailService 中,完成登录的业务,只有查到访问资源的请求用户存在才会进入到下一步,当然在这个类中,可以结合现有系统的角色,权限体系做进一步的整合,而MySecurityConfig这个类,控制对访问的URL做保护,规定了哪些URL需要走登录认证,哪些可以不用认证等配置信息
启动项目之后,让我们来做一下测试吧,分别访问一下下面的接口
http://localhost:8081/open/api/user-info
http://localhost:8081/account/get/list接口1可以直接访问,因为在配置类中对接口直接放行了
访问接口2的时候,弹出了如下的自定义登录页面
在数据库中有这样一个用户,我们输入用户名和密码,就可以访问到该接口了
本篇总结了几种常用的限制访问后端URL的方式,希望对看到的小伙伴们有用,本篇到此结束,最后感谢观看!
-
向指定Url发送POST请求的两种解决方案
2020-09-18 18:07:59后台模拟浏览器向指定Url发送post方式的请求数据,这里采用的解决方案是Apache基金会HttpComponents项目,模拟浏览器对服务器发起请求; 2.写个HTML用浏览器模拟发送请求,具体做法是:页面加载函数中绑定submit()自动...问题描述:
项目中遇到一个问题,需要向第三方系统提供的Url地址以post方式发送表单信息来测试接口,这让web经验不足的我犯难了,最后通过分析后拆解问题,找到了两种测试接口的办法;
问题分析:
提交表单到指定Url,正常操作是前端写一个按钮,然后点击则会提交表单对象传递给后端;
<input type="button" value="提交" >
这个流程也就是浏览器向服务器的指定资源路径下发送post请求:
抛去旁支末节,简单来说这个需求就是web开发中最基本的功能实现:用浏览器向服务器发请求
所以可以得到解决方案有两种:
1.后台模拟浏览器向指定Url发送post方式的请求数据,这里采用的解决方案是Apache基金会HttpComponents项目,模拟浏览器对服务器发起请求;
2.写个HTML用浏览器模拟发送请求,具体做法是:页面加载函数中绑定submit()自动提交form表单到指定Url;
HttpComponents项目的一些介绍 官网地址:(http://hc.apache.org/);
Apache开源组织中的HttpComponents,主要是提供对http服务器的访问功能;在某些时候可能需要通过程序来访问别人的网页程序,比如从别人的网页中“偷”一些数据。如果对方仅仅是一个很简单的页面,那我们的程序会很简单。但是考虑到一些服务授权的问 题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到 COOKIE问题的处理。我们知道目前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面!再比如通过HTTP来上传文件呢?
HttpComponents项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程。通过它可以让原来很头疼的事情现在轻松的解决,例如你不再管是HTTP或者HTTPS的通讯方式,告诉它你想使用HTTPS方式,剩下的事情交给 httpclient替你完成。
问题解决:
方案一:使用HttpComponents项目来实现"通过程序来访问服务器资源";
1.手动创建的项目需要Apache基金会的开源项目 HttpComponents 项目的支持,下载对应的项目版本.我这里使用的是 httpcomponents-client-4.5.12-bin 版本,然后建立项目的jar包依赖;
2.如果是maven项目,跳过步骤1,直接导入依赖坐标即可
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version> </dependency>
3.下面是一个简单的测试类:
import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; public class HttpComponentsPostTest { @SuppressWarnings({ "unused", "deprecation" }) public static void main(String[] args) throws Exception { HttpPost post = new HttpPost("http://apis.juhe.cn/simpleWeather/query"); // 添加参数 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("key", "68d7b52b0e37a602fac910e02d521994")); params.add(new BasicNameValuePair("city", "北京")); post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); // (3) 发送请求 HttpClient http = new DefaultHttpClient(); HttpResponse response = http.execute(post); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity resEntity = response.getEntity(); String message = EntityUtils.toString(resEntity, "utf-8"); System.out.println(message); } else { System.out.println("请求失败"); } System.out.println("响应状态信息为"+response.getStatusLine()); } }
运行得到的结果如下,说明响应成功;
方案二:写个HTML用浏览器模拟发送请求,具体做法是:页面加载函数中绑定submit()自动提交form表单到指定Url;
<!DOCTYPE html> <html> <head> <title>测试北京天气的页面</title> </head> <body> <form id="cmbform" action="http://apis.juhe.cn/simpleWeather/query" method="POST" > <input type="hidden" name="key" value="68d7b52b0e37a602fac910e02d521994" /> <input type="hidden" name="city" value="北京" /> </form> <script type="text/javascript">document.getElementById('cmbform').submit();</script> </body> </html>
保存后打开该文件,得到如下结果:
同样可以实现对服务器资源路径的请求.
参考链接:
https://blog.csdn.net/ethan__xu/article/details/82850989
https://blog.csdn.net/wjrong_1/article/details/51114233?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242 -
Ajax指定URL路径不正确的解决办法
2018-12-05 01:37:53今天在写了自己的毕设设计遇到了一个问题,就是提交的地址不是自己在$.ajax中设置的url,但是可以正确回调success。后来在网易博客上看到一位大神的博客瞬间茅塞顿开。才明白主要是因为缓存的问题。这种问题只会子在... -
git pull push未指定远程branch报错
2017-11-08 11:46:58git pull push未指定远程branch报错 转自:http://www.360doc.com/content/14/0919/10/19315284_410639672.shtml 在高版本的 git下面,也许会看见这样的提示: There is no tracking information for the ... -
Windows7 64位 连接Access数据库"未发现数据源名称并且未指定默认驱动程序"的解决办法
2019-03-21 15:09:15我们在Windows xp中访问access的时候,...但是在window7 64位系统,是没有办法找到这个驱动的,会报未发现数据源名称并且未指定默认驱动程序 这个时候我们需要安装Access的驱动程序,获取地址: 32位:http://do... -
Windows 64位 连接Access数据库"未发现数据源名称并且未指定默认驱动程序"的解决办法
2016-05-05 10:54:23// 这里是解决中文乱码 prop.put("user", ""); prop.put("password", ""); //String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + mdbFile.getAbsolutePath(); String ... -
VS打开早期VS版本创建的项目无法启动IIS Express Web服务器指定的url无效的问题解决方法
2018-12-13 10:50:36不要勾选“覆盖应用程序根” -
万网域名转向指定URL地址
2018-01-25 17:13:10在万网(阿里云)新申请的域名 , 在域名解析-选择显性/隐性URL-填入URL地址,保存会提示"URL备案异常" 解决方案 : 工具 : 米发(新用户的话是需要注册登录的) http://console.mfpad.com/user/profile 打开米发控制台后,... -
maven本地配置及pom.xml配置解决未指定jdk版本错误
2017-10-20 08:59:03-- 指定jdk版本,解决编译或打包时出现jdk版本未指定错误 --> <id>custom-compiler</id> <properties> <JAVA8_HOME>D:\Java\jdk1.7.0_80 <JAVA7_HOME>D:\Java\jdk1.8.0_121 <JAVA6_HOME>D:\Java\jdk... -
“java.sql.SQLException:指定了无效的 Oracle URL”的解决
2014-07-14 22:50:34连接Oracle,出现了“ java.sql.SQLException: 指定了无效的 Oracle URL”的错误,但是太晚了,就休息了。刚才在Google上搜索了一下,感觉自己的代码是没有问题的。 DBURL=""jdbc:oracle:thin@127.0.0.1:1521:My... -
url特殊字符转义及解决方法
2021-03-05 16:06:23)分隔URL和查询4、百分号(%)制定特殊字符5、#号指定书签6、&号分隔参数转义字符的原因:如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的... -
win7系统中ie浏览器无法浏览网页提示您所请求的网址(url)无法获取如何解决
2021-08-13 03:11:15在win7用户遇到ie浏览器无法浏览网页,提示您所请求的网址(url)无法获取,碰到这样的问题该如何处理呢,接下来随win7之家小编一起来看看具体的1、网络设置的问题这种原因比较多出现在需要手动指定IP、网关、2、DNS... -
java URL java.net.URL类的使用 详细介绍 URL转义 解决URL中文字符
2018-07-21 09:39:59类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,也就是我们常说的域名、浏览器访问地址。 在Java中就是使用URL访问网络资源,获取... -
本机无法url访问服务器原因问题解决-防火墙及服务器控制台设置
2020-11-28 11:17:46我的情况是本机无法通过url访问阿里云购买的虚机(可以ping通),遇到的原因与解决方法供大家参考: 关闭windows的防火墙 查看服务器的防火墙是否开启(CentOS7系统) systemctl status firewalld 如果防火墙是... -
WebRequest.Create(url)无效的URI:无效端口指定的URL时
2019-09-27 13:19:04异常信息:无效的 URI: 指定的端口无效 今天做文件下载到流时,WebRequest.Create(url)一直报错:无效的 URI: 指定的端口无效,搞了两个小时没整好!...解决办法:最后把这个URL.replace("\\","/"),再WebRequ... -
在URL中传递中文的解决方式
2018-10-30 17:28:55在URL中传递中文的解决方式 2015年05月13日 17:13:55 thinkinglink 阅读数:10321 标签: URL编码中文编码乱码解决 更多 个人分类: web前端 在URL中传递中文的解决方式 1.第一种方式,主要是通过配置搞定... -
微信中打开链接,自动打开外部浏览器打开指定URL页面
2019-01-18 13:17:29希望官方开发文档中解决方案可以收纳。造福大家,气死微信哈哈 给个动态图自己看: 以上方法只是用PHP做的一个header头部响应为PDF下载文件,例如JAVA,.NET,Python等都可以的。主要就是让服务端返回一个PDF下载... -
SpringBoot上传图片到指定位置,并返回URL
2020-04-01 15:23:43windows临时文件夹: windows的临时文件夹位置: C:\Users\User\AppData\Local\Temp Linux的临时文件夹位置: /tmp 2、解决方案(4种): (1)用图片服务器。。。。。。(我不会。。。) (2)将SpringBoot项目打... -
关于python中selenium获取不到跳转页面的当前url问题解决
2019-01-26 23:39:19关于python中selenium获取不到跳转页面的当前url或是HTML问题解决 问题详述: 在selenium爬取带有js渲染的网页时,当某些网页点击跳转新的标签页后,通过采用url = browser.current_url来获取当前点击跳转后页面... -
url中的特殊字符+ % # & = ? /无法被后端解析解解决方法
2019-11-30 12:49:04项目中有一个接口是用GET方法接收参数的,测试的时候发现当URL的参数中出现 + 号的时候,传到后端 + 号全都变成了空格了。 然后从网上找到了原因:URL参数中是不能出现+ % # & = ? /等特殊字符的,因为这些字符... -
解决浏览器缓存问题---url拼接一个时间戳
2017-08-24 10:34:50当我们多次访问同一个页面,如果url都...解决办法在url后面加一个timestamp时间戳,保证每次的url都是变化的,这样就不会读取浏览器缓存了。 以servlet为例,加入我们重定向一个路径:Timestamp time = new Timestamp -
急求!UClient 搜索提示:您指定的服务器不可访问,请检查您的网络链接,并确保URL正确
2021-03-18 11:19:19这是什么问题,该如何解决,网络一切正常,端口号也正确 <p><img alt="" height="635" src="https://img-ask.csdnimg.cn/upload/1616037394037.png" width="1231" /></p> -
IE浏览器url中出现中文访问404问题解决
2019-09-03 11:45:21使用ie浏览器,当get请求访问url中含有中文时,就会返回404. 为什么firfox和chrome就没有这个问题呢? 对比后你会发现浏览器地址栏中firfox和chrome把中文都转换成了%E....什么的东西,然后copy到ie也能正常访问了. 这... -
2种方式解决vue路由跳转未匹配相应路由避免出现空白页面或者指定404页面
2020-11-20 21:10:00在做项目时,遇到需要做路由跳转,但是用户输错了URL地址,或者其他非法URL路由地址,我们可能会跳转到404页面,不管你有没有写一个404页面,当出现未匹配路由都需重新指定页面跳转。我们首先想到的一定会是路由... -
cas登陆成功跳转url指定失效 的一种原因
2019-02-22 15:33:15cas登陆成功跳转url参数client-host-url指定失效问题 问题场景: nginx 地址:http://localhost/ 端口80; tomcat 应用app1 地址http://localhost:8081/app1 spring boot \ cas 4.2.7 用户通过nginx反向代理访问 ... -
网站url后带spm参数的作用
2021-01-13 18:42:43SPM(super position model 超级位置模型) 跟Google Analytics在URL里面拼上utm_source, utm_medium等参数大同小异。 思路和原理 先来看几个问题 1.如何统计某个页面的pv呢? 一种思路是直接统计服务端nginx请求... -
单页面应用的页面跳转及如何通过url跳转至指定页面
2018-08-31 13:53:29HTML5为history对象添加了两个...都会改变浏览器标签栏中的URL值,区别在于pushState()会将之前的地址记录在history对象中,通过back()可以返回前一页,replaceState()则不能返回 我用到的是history.replaceState...