在Azure上更改已接受的MIME类型,无需更改Web.Config文件。
在Azure上更改已接受的MIME类型,无需更改Web.Config文件。
我想在我创建并通过FTP部署到Azure的网站上显示一个.mp4作为背景视频。不幸的是,访问背景视频总是给我返回404错误。这些页面都是使用AngularJS的.html文件。我想我需要为.mp4文件添加自定义的MIME类型。通常情况下,这可以在Web.Config中完成,但由于这只是我在Notepad++中编写的东西,我没有(除了这个问题之外,我真的没有需要)Web.Config。我在Azure门户网站的配置部分找到了连接字符串和appSettings的地方,但是我没有看到可以设置MIME类型的选项。在Azure门户网站上允许.mp4文件的方式是通过创建一个Web.Config文件并将其通过FTP上传吗?
问题的出现原因是用户想要在Azure上更改MIME类型,但是不想使用web.config文件来实现。用户希望能够通过Azure的门户进行配置,而不是依赖于.NET或IIS。
解决方法是通过以下步骤在Azure上更改MIME类型而不使用web.config文件:
1. 登录Azure门户并导航到所需的Web应用程序。
2. 在左侧的菜单中,选择“应用服务设置”。
3. 在“通用设置”下,找到“MIME类型”选项。
4. 单击“MIME类型”旁边的“编辑”按钮。
5. 在弹出的对话框中,单击“添加”按钮以添加新的MIME类型。
6. 输入所需的MIME类型和文件扩展名。
7. 单击“保存”按钮以保存更改。
通过上述步骤,用户可以在Azure上更改MIME类型而不依赖于web.config文件。这样,用户可以使用Node.js/Express等非.NET技术栈,并且可以避免使用IIS,而使用NGINX等其他服务器。
问题的原因是使用了AuthInterceptor来全局设置请求的Headers,但是这也会影响到SVG和其他媒体文件的请求,例如在这种情况下是MP4文件。解决方法是根据请求的类型和请求的资源类型来过滤请求。以下是代码示例:
export class AuthInterceptor implements HttpInterceptor { intercept(req: HttpRequest, next: HttpHandler): Observable > { if (req.method === 'GET' && req.url.endsWith('.svg')) { req = req.clone({ setHeaders: { 'Authorization': `Bearer ${btoa("admin:admin")}`, }, }); } else { req = req.clone({ setHeaders: { 'Content-Type': 'application/json; charset=utf-8', 'Accept': 'application/json', 'Authorization': `Bearer ${btoa("admin:admin")}`, }, }); } return next.handle(req); } }
然而,这种解决方法并没有解决问题,因为在Azure上更改MIME类型仍然需要在web.config文件中进行配置。因此,我们需要采取其他方法来解决这个问题。