一尘不染

对jquery中的303状态代码做出反应(防止重定向)

ajax

当我向某个服务器发送请求时,将出现303响应,然后是请求的响应以及200状态代码。有趣的是,我只能在开发人员控制台的网络视图中看到此内容。当检查我的$
.ajax()请求的状态码和响应时,将有第二个请求的响应以及200 http状态码。

问题在于,似乎第二个请求正在缓存(尽管状态码为200),我真的需要它不可缓存。因此,我真的很想干预使用http
303状态代码进行的转发过程。我希望我的jquery函数检查状态码,然后发送带有显式标头的get请求,该标头告诉服务器不要缓存响应。

好吧,我只是不知道该怎么做,因为(如上所述),jQuery.ajax方法将使用转发的请求的响应和状态码(200)进行响应。

你能帮助我吗?

编辑

10.3.4 303查看其他

可以在不同的URI下找到对请求的响应,并且应该使用该资源上的GET方法来检索该请求。存在此方法主要是为了允许POST激活脚本的输出将用户代理重定向到所选资源。新URI不能替代原始请求的资源。303响应一定不能被缓存,但是对第二个(重定向的)请求的响应可能是可缓存的。

也许我需要以某种方式阻止用户代理重定向自己,所以我可以进行重定向?

还是有一种方法可以简单地告诉服务器/浏览器不要缓存来自客户端的第二个请求?或阻止它重定向我的请求?还是至少在重定向之前修改了第二个请求?


阅读 269

收藏
2020-07-26

共1个答案

一尘不染

300范围内的响应是透明的。AFAIK,网络浏览器不会将其中任何一个暴露给javascript。因此,处理303不是一个选择。

您是否尝试过cache在ajaxSetup中将该属性设置为false?它将时间戳添加到请求,以防止浏览器缓存响应。您也可以自己手动执行此操作。浏览器应将第一个请求网址与第二个响应网址匹配

2020-07-26