发送请求后服务器一直没有响应?

如题, ajax发送请求后, 服务端一直没有响应结果。打开浏览器控制台发现Request Headers处出现一个"Provisional headers are shown" 的警告, 查资料后知道请求可能根本没有发送出去, 但这个请求我在本地服务器运行是可以正常响应的, 部署到正式服务器后就出现了这样的问题。请问到底是怎么回事呢,以及有什么解决办法呢? 急啊~~~脑壳都大了 @JFinal

TIM截图20170902145201.png


TIM截图20170902145243.png

评论区

JFinal

2017-09-02 15:14

从来没碰到过这种事,参考一下这里:
http://www.duanzhihe.com/575.html
http://blog.csdn.net/wangjun5159/article/details/46912803
http://blog.xinshangshangxin.com/2015/04/20/%E8%A7%A3%E5%86%B3provisional-headers-are-shown%E7%9A%84%E8%BF%87%E7%A8%8B/

arboret

2017-09-02 15:22

@JFinal 谢谢,帖子我看了,不过依然没明白为什么会出现这样的问题, 不过浏览器控制台打印了两个警告信息, 其中一个是这样的:Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/. 不知是否与此有关呢

JFinal

2017-09-02 15:24

@arboret 没这方面的经验,建议仔细单步调试,看请求是被什么东东拦截的

arboret

2017-09-02 15:29

@JFinal 现在很麻烦的是这问题只在正式服务器上出现, 在本地服务器上是正常的,要怎么才能调试啊

l745230

2017-09-02 22:47

@arboret idea可以本地远程服务端代码进行断点调试,eclipse也行

arboret

2017-09-04 11:11

@l745230 @JFinal 谢谢!通过远程调试已经发现问题并解决了,是因为我使用了SecureRandom来生成订单号导致阻塞,具体情况在这里http://www.wang1314.com/doc/topic-1484777-1.html

JFinal

2017-09-04 11:24

@arboret 能否将对 SecureRandom 使用时出问题的这部分代码贴出来,这样有助于后来者碰到同样的问题

这个问题挺有价值,因为很多人是在 windows 上开发在 linux 上部署,开发阶段很难发现问题

arboret

2017-09-04 11:29

@JFinal
orders.stream().forEach(o -> {
try {
//此处的代码导致阻塞
o.setOrderno("B-" + SecureRandom.getInstanceStrong().nextLong() );
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
// o.setOrderno("B-" + System.currentTimeMillis() + user.getId() );
o.setBetDate(new Date() );
o.save();
});

JFinal

2017-09-04 11:34

@arboret 最后改成什么样了呢? 是不是用的一个 static:
private static SecureRandom sr = new SecureRandom();

然后用的时候这样:
o.setOrderno("B-" + sr.nextLong() );

arboret

2017-09-04 11:44

@JFinal 最后没有使用SecureRandom了, 改成了这样o.setOrderno("B-" + System.currentTimeMillis() + user.getId() );

热门反馈

扫码入社