jQuery ajax and SSL?

13

我们的网站中有一些页面使用SSL,但大多数页面不使用(因为需要被Web爬虫抓取)。

基本上,任何已登录用户访问的页面(有一些例外情况)都在SSL保护下,

但是用户首先必须从非https页面登录(登录表单是从任何页面顶部下拉的表单)。

那么,

我如何强制通过ajax的请求使用SSL?

这是否安全?


7
网络爬虫从什么时候开始不能在 SSL 上运行了?Google 搜索引擎和必应搜索引擎可以正常索引它。 - vcsjones
1
SSL页面加载较慢。但它们应该可以正常爬行。 - nzifnab
1
使用iframe。我喜欢iframe。它们很酷,而且可以让你绕过这样的事情。使用iframe,您可以做所有您想做的事情。上帝保佑发明iframe的人。 - Magmatic
1个回答

11

同源策略会受到侵犯,因为它不认为HTTPS URL来自同一源头的HTTP URL。您可以通过使用JSONP或在Web服务响应中设置Access-Control-Allow-Origin头来解决此问题。许多Web服务已经设置好了这个。


2
这是一个很容易解决的问题,只需要将ajax JavaScript文件从https获取即可。 - James Black
1
@James Er... 如果你在每个页面上都有一个登录表单,但不想通过SSL提供每个页面,因为它会减慢所有请求,那么你所说的不会起作用,对吧?在http页面上执行https的javascript调用。有很多页面让你在http上登录时使用SSL;Facebook就是其中之一,我还没有看到任何一个使用javascript来实现它的。所以我不认为这是一个“解决方案”。 - nzifnab
所以...这是错误的。您可以在登录脚本上提供允许跨域访问的标头。您甚至可以仅允许自己的域名访问。然后,您可以在通过HTTP提供的页面上使用HTTPS协议进行AJAX请求。我不知道与此相关的安全问题,我的猜测是中间人攻击仍然可用。 - Jasper
@Jasper 先生,您说得对。显然我在三年前写下了这个答案。我的知识已经有所提高。您所指的技术称为“CORS”——跨域资源共享。只要服务器对“CORS”做出适当响应,您就可以成功地获取这些请求。 - nzifnab
@nzifnab 嗯,这个应该被移除作为答案或者更新一下。我在谷歌的搜索结果中找到了它。如果你将其删除,你就会得到"Disiplined"徽章 :) - Jasper
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接