Javascript FastCGI 服务的页面上的未定义函数

Javascript undefined function on a page served by FastCGI

我有一个简单的 HTML 表单,由嵌入式 javascript 函数处理,在本地进行所有计算。

<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
</head>
<body style="background-color:#ffccee;">

<form>
    <input id="firstThing"> <br><br>
    <button type="button" onclick="return doThings();">click me</button><br><br>
</form>
<script>
    function doThings(){...}
</script>
</body></html>

一旦我通过 Nginx 使用 FastCGI 为页面提供服务,按钮的点击操作就会失效。

Uncaught ReferenceError: doThings is not defined
onclick https://page.com/app.o:1

很明显该页面正在尝试联系我的 CGI 应用程序,但我的目的是让按钮指向 运行 嵌入的 javascript。 我必须更改什么设置?

# NGINX config
http {
    include       mime.types;
    default_type  application/octet-stream;
    charset       utf-8;
    sendfile        on;

    server {
        listen       443 ssl;
        server_name  page.com;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            #some fastcgi_param removed...
            if ($uri !~ "^/assets/") {
                fastcgi_pass 127.0.0.1:1234;
            }
        }
    }
}
  1. 将 html 中的 javascript 函数移动到其自己的文件中(本例中为 assets/script.js)。

  2. 更改 html 中的脚本标记以反映更改:

    <script type="text/javascript" src="assets/script.js"></script>

html 中的实际脚本路径将取决于您的 Nginx 配置。 由于我的服务器设置为绕过 CGI 并按原样提供资产文件夹的内容,我们到这里就完成了。

我的按钮现在可以正常工作了。 onclick 操作由 javascript 源而不是 CGI 处理。