2011-06-20 48 views
13

在我们的网站中,某些页面使用SSL,但是大多数页面不会(因为它们需要通过网页机器人抓取)。jQuery ajax和SSL?

它几乎可以归结到任何页面上的用户登录,也有少数例外是SSL下,

但用户首先必须从非HTTPS页面登录(登录表单是一种形式从任何页面的屏幕顶部下降)。

因此,

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

这更安全吗?

+7

从何时起,网络爬虫不能通过SSL工作? Googlebot/Bing索引就好了。 – vcsjones

+1

好吧,SSL页面加载速度较慢。他们应该可以抓取,但 – nzifnab

+1

使用iframe。我喜欢iframe。他们很酷,他们让你解决这样的问题。有了iframe,你可以做所有你想做的事情。上帝保佑发明了iframe的人。 – Magmatic

回答

11

它违反了JavaScript的同源策略,因为它没有看到HTTPS URL与HTTP URL来自同一个源。您可以通过使用JSONP或在Web服务响应中设置Access-Control-Allow-Origin标头来解决此问题。许多Web服务将被设置为执行此操作。

+2

这是一个很容易解决的问题,但是,有来自https的ajax javascript文件。 –

+0

你确定这有效吗?如果您使用的是http:// www.mysite.com',并且该页面上的表单将加载到https:// www.mysite.com/login的页面上,则该表单适用于您的JS文件从'https:// www.mysite.com/javascripts'加载?这太有趣了。我可能不得不在下次需要解决此问题时尝试。编辑:愚蠢的东西拿出了http与https – nzifnab

+0

只要你的ajax调用与html的源代码一样,那么就没有问题了,所以如果你想要去https://网站ajax调用然后从https://提供页面。我不确定是否需要这样做,但如果在测试时出现错误,那么只需将javascript更改为https即可。根据这篇文章,这应该不重要,这就是为什么我没有在我的答案中提出这个建议。 http://bytes.com/topic/javascript/answers/459071-ajax-https –