ueditor的图片抓取catchimage,在外网抓不到图片的问题

最近做ueditor的图片抓取catchimage,前后端分离的架构,在本地开发测试都是好好的,但部署到外网就抓不到图片了,

外网先后报了两个错,报错如下:

1、后台报错:

java.lang.NullPointerException
    at com.baidu.ueditor.hunter.ImageHunter.capture(ImageHunter.java:62)
    at com.baidu.ueditor.ActionEnter.invoke(ActionEnter.java:69)
    at com.baidu.ueditor.ActionEnter.exec(ActionEnter.java:41)

。。省略部分日志。。

2、HTTP请求报错:The valid characters are defined in RFC 7230 and RFC 3986

 

这两个错误,在本地测试都是通过的,但外网部署就出了差错。

对比第一个错误的请求,发现本地部署抓取图片是用的get请求,而外网是用的post请求,导致后台接收不到参数报错。

找到问题就开始干,在ueditor.all.js里面,找到判断是否跨域的判断isCrossDomainUrl,对此逻辑进行修改,

增加判断pathname服务名是否相同,搞定此问题。

第2个错误,实际上请求并没有进入后台接口,而是在tomcat层就被拦截了。

报的错也是tomcat给的提示信息。

查询一番之后,对错误原因有了理解,引用别人的原话 “这个问题是高版本tomcat中的新特性:就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。而我们的系统在通过地址传参时,在url中传了一段json,传入的参数中有”{“不在RFC3986中的保留字段中,所以会报这个错。”原文链接:https://blog.csdn.net/qq_32365919/article/details/82055800

解决方案,参考文章:https://yq.aliyun.com/articles/641394

因为我外网使用的是tomcat9,使用很久了,突然降低版本肯定不合适,所以只能修改配置文件了。

修改tomcat的conf/server.xml,增加:

relaxedPathChars="|{}[],"
relaxedQueryChars="|{}[],"
   <Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
	relaxedPathChars="|{}[],"
	relaxedQueryChars="|{}[],"
               redirectPort="18443" />

再次测试,搞定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值