繁体   English   中英

包含 CSS 的文件和未在服务器上提供的 JS 文件并打印 ��U��v��8��+

[英]File with CSS and JS files not serving on server and prints ��U�v�8��+

当我在本地运行我的 hapijs 应用程序时,它可以正常工作,但是当我将它部署在服务器中时,它不起作用。 该页面可以提供 html 个文件,但如果 HTML 文件有 css 或 bootsrap,那么它会打印奇怪的符号,如�U�v�8�+

显示奇怪响应的链接: https://us-central1-fir-app-85853.cloudfunctions.net/v1/teacher/list

这是我的 index.js 文件。

我该如何解决这个问题?

'use strict';
const functions = require('firebase-functions');
const api = require('./server');

exports.v1 = functions.https.onRequest(async (event, resp) => {
  let server = await api.startServer();
  const options = {
    method: event.httpMethod,
    headers: event.headers,
    url: event.path,
    payload: event.body
  };

  return server
    .inject(options)
    .then(response => {
        delete response.headers['content-encoding']
        delete response.headers['transfer-encoding']
        response.headers['x-powered-by'] = 'hapijs'
        resp.set(response.headers);
        return resp.status(response.statusCode).send(response.result);
    })
    .catch(error => resp.status(500).send(error.message || "unknown error"));
});

这是我在 github https://github.com/kartikgreen/hapijs-firebase上的完整源代码

我刚刚删除了请求标头 object 中的 'accept-encoding': 'gzip, deflate, br' 行,以不请求 gzip 压缩。

这个答案已经在链接

这很可能是字符编码问题。

有几个原因,一个是输出的字符编码与 UTF-8 不同。

所以说你的文档输出为 ISO-8859-1(称为 Latin-1),如果你没有设置字符集,浏览器将默认为 UTF-8。把它想象成输出中文然后要求语言解析器将其视为日语,它永远听不懂!

不确定如何在 hapjs 中执行此操作,但在 PHP 中,您只需添加一个 header,如下所示:-

header("Content-Type: text/html; charset=ISO-8859-1");

另一个可能的原因是 字节顺序标记 (BOM)

如果你的脚本在它应该之前不小心输出了一些空白数据,这可以添加这些不可见的字符。

Stack Overflow 上有很多关于 BOM 的答案,所以我不会重复这些。

我通常会说通过W3C 国际化检查器运行该页面,但您的页面似乎将其杀死(这可能归结为 firebase)。 也许您可以将原始 output 捕获到一个文件中并通过这种方式运行它?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM