Cloudflare在Chrome上显示html代码而不是网页

时间:2019-01-03 15:43:57

标签: angular google-chrome frontend cloudflare

我有一个Angular 4应用,我在aws ec2机器上使用docker部署了它。我正在使用CloudFlare来管理我的DNS。

当我尝试刷新页面时,问题出在Chrome上,而不是向我显示网页,而是向我返回索引的html代码。如果我直接从计算机通过IPV4访问该页面,则该应用程序运行正常

在Firefox / Safari上,一切正常。

这是我的index.html:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>PageName</title>
    <base href="/">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=IBM+Plex+Serif|Roboto" rel="stylesheet">
    <link rel="icon" type="image/x-icon" href="assets/menu/favicon.png">
    <link rel="manifest" href="./manifest.json">

    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="utf-8"></script>
</head>
    <body>
        <div id="global_root">
            <app-root></app-root>
        </div>
    <script type="text/javascript" src="inline.bundle.js">
</script><script type="text/javascript" src="polyfills.bundle.js"></script><script type="text/javascript" src="styles.bundle.js"></script><script type="text/javascript" src="vendor.bundle.js"></script><script type="text/javascript" src="main.bundle.js"></script></body>
</html>

这些是IPV4的响应头:

Connection: keep-alive 
Date: Fri, 04 Jan 2019 14:25:56 GMT 
Server: nginx/1.15.7 
Transfer-Encoding: chunked
X-Powered-By: Express

这些是通过cloudflare的响应头:

cf-ray: 493e5f00093f9706-FRA 
date: Fri, 04 Jan 2019 14:24:51 GMT 
expect-ct: max-age=604800, 
report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" 
server: cloudflare 
status: 200 
strict-transport-security: max-age=2592000; includeSubDomains 
x-content-type-options: nosniff 
x-powered-by: Express

1 个答案:

答案 0 :(得分:1)

您似乎没有设置Content-Type标头,而Cloudflare会在所有响应中添加X-Content-Type-Options: nosniff,Chrome将其应用于文档,而Firefox和Safari则未将其应用于文档(仅适用于样式表和脚本)。

默认情况下,Express设置Content-Type: text/html; charset=UTF-8,所以可能有些怪异-您究竟在如何提供此文档?您可以尝试res.type("html")来明确。