当前位置: 首页>>网站问题>>正文


在服务文件时,在HTTP 200之前HTTP 401两次

webfans 网站问题 , , , 去评论

问题描述

我已经构建了一个由Sharepoint提供的Javascript Web应用程序(即,在Web应用程序中没有任何Sharepoint代码,它只是从Sharepoint 2010文档库提供的一些HTML /JS代码)

我正在显示HTML5视频并从同一个文档库中获取文件,这在Google Chrome上运行得非常好,但是如果我尝试使用Firefox(或使用IE9),则每个源文件都会被HTTP 401错误拒绝两次它会返回HTTP 200。

这样做的结果是,如果我有一个非常简单的HTML文件(见下文)并在本地运行,那么如果我将HTML和视频上传到公司的Sharepoint服务器(进入文档库),则视频在所有浏览器中都能正常播放,那么它不会在IE或Firefox中加载 – 但在Chrome中运行良好!

<html>
<body>
    <video>
        <source src="localvideo.webm" type="video/webm">
    </video>
</body>
</html>

如果我将源元素更改为在不同服务器上引用视频文件,那么它再次正常工作,所以这必定是SharePoint服务文件的问题。有没有人有任何建议如何解决这个问题?无论是在Sharepoint或JS?我无法编辑超过网站所有者权限的任何内容。

最佳解决方法

使用NTLM authn时,两个HTTP 401响应是正常的,这就是HTTP的工作方式。

首先它会尝试一个匿名请求,它会生成第一个401请求。响应中包含一个标题,表示“尝试使用NTLM”。

然后NTLM程序(这是一种挑战/响应方法)需要一个401和最后一个200.如果你想要更多的细节,这里有一个很好的链接:http://davenport.sourceforge.net/ntlm.html#ntlmHttpAuthentication

例如,如果您切换到Kerberos,您将获得一个401(匿名请求),然后是200(发送Kerberos令牌时)。

(我知道这并不能完全回答你的问题,但这就是你得到两个401的原因。)

次佳解决方法

Wictor的回答非常好,但对我来说,这个问题的根本原因是IIS的MIME类型设置。

IE和Firefox将完全遵循由服务器发送的mime-type(默认为IIS的应用程序/octet-stream),但如果mime-type不正确,也不会播放视频 – video /webm,video /ogg或video /mp4 。相比之下,谷歌浏览器会根据文件的内容猜测mime-type(一种危险的习惯已经在争论) – 因此浏览器之间的区别。

解决此问题的方法是将这些mime-types添加到IIS的系统设置并重新启动(details can be found here)。我希望这可以帮助别人 – 它让我永远绊倒这个!

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/1174.html,转载请务必附带本地址声明。