【发布时间】:2023-03-15 06:49:01
【问题描述】:
我已将页面缩减到最低限度以重现此问题。它看起来像这样:
<!DOCTYPE html>
<html lang="en">
<head>
{% load staticfiles %}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="//malsup.github.com/jquery.form.js"></script>
<script type="text/javascript">
$(document).ready(
function() {
$('#signupform').ajaxForm(
function(new_html) {
alert("testing!");
});
});
</script>
</head>
<body>
<form id="signupform" action="{% url 'index' %}" method="post">
{% csrf_token %}
{{ form.email }}
{{ form.university }}
<button type="submit">
GET EARLY ACCESS
</button>
</form>
</body>
</html>
基本上只是一个 from 和一些使用 .ajaxForm() 来修改表单的 jquery。
当我通过 HTTP 加载网站时,它按预期工作:当按下按钮时,会出现“正在测试!”的警报。显示,POST是在后台发出的,没有重定向。但是,当我通过 HTTPS 运行它时,会出现问题,就像 javascript 甚至不存在一样。当我单击提交按钮时,没有警报并且站点正常重定向。
我已经在本地使用 HTTP 和标准 $ python manage.py runserver 进行了测试,并使用 HTTPS 使用 django-sslserver 和 $ python manage.py runsslserver 进行了测试。我还在我们的 Heroku 登台服务器上运行了该应用程序,并获得了完全相同的 http/https 差异。
当网站通过 https 而不是 http 加载时,可能导致此 javascript 行为不同的原因是什么?
更新:根据评论,这里是 javascript 控制台输出:
混合内容:“https://localhost:8000/”处的页面已加载完毕 HTTPS,但请求了不安全的脚本 'http://malsup.github.io/jquery.form.js'。该请求已 受阻;内容必须通过 HTTPS 提供。
这会改变问题的性质。现在的问题是:为什么是
//malsup.github.com/jquery.form.js
没有通过 https 加载? (不确定我是否应该删除并重新发布这个新问题)
【问题讨论】:
-
浏览器的Javascript控制台有输出吗?
-
github不是cdn,最好使用cdnjs之类的服务cdnjs.com/libraries/jquery.form