我有一个简单的jQuery代码,提交表单并隐藏/显示一些屏幕信息。它在测试时工作正常,直到通过https://加载,然后在IE7中中断。它似乎完全打破,没有任何脚本有任何影响。我还得到IE警告“有些元素不安全”。
有没有人有过这方面的经历?甚至更好,一个解决方案!我必须通过https加载页面作为信用卡付款页面。
答案 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,因此没有任何我自己的代码出错。这大大简化了可能出错的列表。