HTTP Client是IDEA中自带的一个插件,用于代替原来的REST Client,打开Tools->HTTP Client->Test RESTful Web Service
,会提示REST Client不推荐使用,推荐使用HTTP Client:java
而后固然就点击使用啊,可是,问题来了,一个普通的GET请求都发送不出去????跨域
IDEA的东西估计没这么菜吧???浏览器
确定不会这么菜的。。。服务器
可是为何就是发不出去???测试
GET请求对吧,浏览器也能够作,因而,使用了浏览器进行测试,一点问题都没有:spa
没理由啊,笔者在想,那为何IDEA不行呢??插件
接着使用了大名鼎鼎的Postman,也是一点问题也没有:3d
Postman也没问题啊,接着试试“情敌”Postwoman,问题来了!代理
发送不出去,查看了一下F12控制台,报错以下:日志
搜索了一下解决办法,是跨域资源请求的问题,在Controller类上加上
@CrossOrigin(value = "http://localhost:3000")
便可,由于Postwoman默认运行的端口为3000。
这个注解还能够做用在方法上,起做用的就是对应的方法,这里是对整个Controller起做用。
另外这里只使用了最简单的参数,其余的参数还有origins
(同value
),allowHeaders
,exposedHeaders
,methods
,allowCredentials
,maxAge
,具体使用不介绍,加上了之后Postwoman就能正常发送请求了:
可是IDEA中的HTTP Client仍是不行啊,就最最最普通的GET请求,仍是返回500:
因而换了一种思路,想再用其余相似插件的方式测试。
因此就想到了VScode,里面有一个相似的扩展叫REST Client,安装之后写了一个普通的GET请求,彻底没问题:
但仍是想不到为何IDEA仍是不行啊???
仍是500 。。。
。。。
可是,反过来想,多是请求发送不出去,由于若是是接受到了请求的话,确定会有日志记录的,可是没有,因此缘由多是请求发送不出去。。。
一个普通的GET请求为何发送不出去?
究竟是为何会返回500?
最后,通过一番痛苦的思考,找到了问题所在:代理!
发送不出去就是由于设置了本地代理,返回的500,是代理服务器返回的,不是Tomcat返回的。
终于,把代理去掉以后,HTTP Client就能够正常使用了:
没错,“真凶”就是代理。
最后终于打消了笔者的误解,为何IDEA中的HTTP Client会这么“菜”,连一个普通的GET请求也发送不出去??