我有一个天蓝色的网站(http://ekpowestore.azurewebsites.net/),它不会在资源管理器或Firefox中显示类似Facebook的按钮。它适用于Chrome和Safari。然而,如果我将地址更改为https(如https://ekpowestore.azurewebsites.net/中所示),则Like和Share按钮可以正常呈现。
喜欢https并不像http那样。我想我可以推荐人们访问https网站,但我仍然对根本原因感到好奇。
当然,在最终在我的天蓝色网站上抛出几乎空白的页面之前,我尝试了大约100种不同的东西。
答案 0 :(得分:0)
当尝试在HTTP请求上加载Facebook脚本时,您的页面似乎返回307“内部重定向”。我不确定,但你可能在你的javascript上使用“Protocol relative”引用
js.src = "//connect.facebook.net/en_US/sdk.js";
将使用当前协议重定向操作(https://connect.facebook ....如果您使用的是HTTPS或HTTP)。你可以尝试用完整的网址替换它来尝试一下吗?
例如
js.src = "https://connect.facebook.net/en_US/sdk.js";
答案 1 :(得分:0)
我放弃了。这不是o.p.的实际答案,所以我不会这样做。但这是我为解决这个问题所做的 - 所以也许有人会觉得这很有用。
请注意,我确实把整个应用程序归结为一个带有facebook插件的HTML文档 - 没有其他依赖项 - 然而仍然IE和FF没有爱,Safari和Chrome很好。这是使用协议相对Facebook路径(即 - " // connect.facebook.net/en_US/sdk.js")和指定的https路径(即" https://connect.facebook.net/en_US/sdk.js& #34)
因此,与Gaurav指出的可能与Facebook引用一起发生的http - https混合内容大战相反,我改变了Azure网站,因此它始终将http转发到https。问题解决了,继续前进('问题解决了,而且问题与回答的问题略有不同')。
添加了一个web.config文件,其中包含以下内容:
````
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>