加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xmlhttprequest – Safari将200个对AJAX请求的响应静默转换为304

发布时间:2020-12-16 02:55:39 所属栏目:百科 来源:网络整理
导读:摘要:Safari报告304响应,即使它在XHR请求上收到200响应 你好 – 我和Safari有一个奇怪的情况,并且已经到了试图自己研究它的路的尽头,我希望有人在这里遇到过这个问题. 我目前开始在Safari中使用我的应用程序(一个厚厚的Sencha Touch客户端与NodeJS提供的RES
摘要:Safari报告304响应,即使它在XHR请求上收到200响应

你好 – 我和Safari有一个奇怪的情况,并且已经到了试图自己研究它的路的尽头,我希望有人在这里遇到过这个问题.

我目前开始在Safari中使用我的应用程序(一个厚厚的Sencha Touch客户端与NodeJS提供的RESTful API交谈)并注意到浏览器偶尔(实际上是:大约5次中有6次)错误处理服务器响应并报告它们(在开发人员工具网络控制台中)作为没有内容的304响应,而不是实际传递的具有JSON内容的200个响应. (并且应用程序正在相应地运行 – 无内容304响应导致应用程序假设它没有数据,并且它以这种方式响应,因此它不仅仅是开发人员面板中的装饰问题.)

标题甚至不正确 – 这里是两个案例的Safari报告的不相交的响应头集合(我已经确认请求内容和标题对于两者是相同的):

200

> Access-Control-Allow-Credentials:true
>访问控制允许标题:*
> Access-Control-Allow-Methods:GET,POST,UPDATE,DELETE,OPTIONS
> Access-Control-Allow-Origin:未定义
>内容长度:2
> Content-Type:application / json;字符集= utf-8的

304

>内容类型:text / javascript
> Last-Modified:Sun,2011年11月20日22:30:45 GMT
>服务器:lightnode
>转移编码:身份

(我省略了两者之间相同的响应头.)

其他几点说明

>我已经验证了服务器发送的响应在每次请求时都是相同的,并且已经tcpdump了流量并确认服务器正在发送200个响应代码(和标头),然后由Safari报告和处理为304响应没有内容(以及上面的虚假标题.)Safari正在报告从未发送的响应.
>上面的304标题看起来类似于此应用程序中可能与静态内容一起发送的内容,但我已确认两个响应都由相同的代码路径提供(API服务器,即没有涉及“lightnode”,这些标头正在由Safari组成.)
>我在Chrome中看不到这种行为
>我已经在Mobile Safari上确认了同样的错误应用程序行为(为其构建了Sencha Touch,以及所有其他WebKit浏览器,如Safari和Chrome),但由于iOS没有确定,因此无法确认伪造的响应处理这真的暴露了这个低级调试信息.
>此处没有XSS / CORS问题,API和静态内容都来自同一个域.
>是的,我已经完成了所有通常的清除cookie /缓存/重启/等初始化的东西,没有任何效果.

版本

> Safari:5.1.1
> OSX:10.7.2

解决方法

伟大的研究工作.你看到的是一个Ajax Redirection&通常你不能在大多数开发人员工具中看到它,但它会发生.理想情况下,它应该对您的应用程序没有影响,在您的问题中我没有看到您报告任何问题或错误只是更多的请求.

这个重定向是在浏览器级别处理的,所以你无能为力(我过去曾尝试过,对此无能为力).

这不是一个传言问题,而是Ajax的行为方式.

希望能帮助到你

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读