简单的jQuery代码正常工作,直到通过https://加载网站

时间:2009-06-29 03:56:16

标签: jquery https

我有一个简单的jQuery代码,提交表单并隐藏/显示一些屏幕信息。它在测试时工作正常,直到通过https://加载,然后在IE7中中断。它似乎完全打破,没有任何脚本有任何影响。我还得到IE警告“有些元素不安全”。

有没有人有过这方面的经历?甚至更好,一个解决方案!我必须通过https加载页面作为信用卡付款页面。

6 个答案:

答案 0 :(得分:78)

之前的三个答案都提到了一个安全的“https”页面试图从“http”路径中包含脚本或其他资源(样式表,图像等)的问题......

我想补充一下这些内容,请注意,如果您的情况是可以通过 http或https加载相同的网页,那么您可以创建“无协议”网址 - - 该协议将被假定为与当前页面相同。请注意,这仅用于访问不同域上的资源(并且仅在这些不同的域同时支持http和https时才有效),因为很明显,如果您访问同一域上的资源,则不需要以http开头: //完全......

例如,这三种资源中的每一种都将采用http或https,具体取决于当前页面的访问方式:

<script src="//www.example.com/whatever.js" type="text/javascript"></script>
<img src="//www.example.com/someimage.png" alt="whatever" />
<link href="//www.example.com/styles.css" rel="stylesheet" />

答案 1 :(得分:11)

如果您通过https://投放网页,则每个资源链接也应使用https://。留意

<script type="text/javascript" src="http://.../jquery.js"></script>

答案 2 :(得分:5)

感谢您的所有投入。该问题最终被追溯到Thickbox.js中提到的图像。

因为它有一个http://(而不是https://)url,它导致了错误消息。弹出的安全消息对加载不安全内容有“是”或“否”,单击“是”告诉浏览器停止加载任何jQuery。

确实是一个棘手的问题,所以我想我会回答自己,希望它可以帮助其他有同样问题的人。

答案 3 :(得分:2)

如果客户端使用HTTPS来请求页面,则页面应通过HTTPS链接到所有媒体(图像,脚本,样式表)。

如果客户端使用HTTP来请求页面,那么您应该在响应中发送此HTML片段:

<head>
    <script
        type="text/javascript"
        src="http://my.domain.com/app/media/jquery.js"
    ></script>
</head>

如果客户端使用HTTPS来请求页面,那么您应该在响应中发送此HTML片段:

<head>
    <script
        type="text/javascript"
        src="https://my.domain.com/app/media/jquery.js"
    ></script>
</head>

不同之处在于,当客户端使用HTTPS请求页面时,服务器会发回一个指向以https://开头的jquery脚本的链接。

答案 4 :(得分:0)

如果您使用的是jquery,也可能会看到类似的行为 code.jquery.com

例如:

code.jquery.com没有有效的SSL。

这可能导致其他脚本无法正常工作。

使用google cdn或从您自己的服务器加载jquery

希望有所帮助

答案 5 :(得分:0)

我使用IE 11作为浏览器。

解决方案:请勿使用兼容模式。工具 - &gt;兼容性视图设置。

症状:

程序在http模式下运行良好。

浏览器在一行报告错误,声称标识符是预期的。

浏览器不允许在jquery库文件上进行调试。文件没有            显示在要调试的文件列表中,可以设置断点            如果通过开发人员的错误消息访问该文件            控制台日志,但断点已被禁用。

浏览器清楚地显示文件已成功加载。

使用其他浏览器时没有出现错误。

提示:我删除了测试程序以加载jquery库文件和显示固定文本的单个div,因此没有任何我自己的代码出错。这大大简化了可能出错的列表。