WebSharper - JQuery 和 HTTPS 参考

WebSharper - JQuery and HTTPS reference

将 w# 客户端页面部署到 github 页面后,出现以下错误:

Mixed Content: The page at 'https://aph5nt.github.io/websharper.amplifyjs/' was loaded over HTTPS, but requested an insecure script 'http://code.jquery.com/jquery-1.11.2.min.js'. This request has been blocked; the content must be served over HTTPS.(anonymous function) @ SampleApp.head.js:1
amplify.js:830 Uncaught ReferenceError: jQuery is not defined

是否可以通过某种方式修复此错误?

快速浏览一下,问题是 jQuery 在 WebSharper 核心中通过 http:

被错误引用
Namespace "WebSharper.JQuery.Resources" [
    Resource "JQuery" "http://code.jquery.com/jquery-1.11.2.min.js"
    |> fun r -> r.AssemblyWide()
]

(https://github.com/intellifactory/websharper/blob/5c884e97fd3dba1102c10a85b171f672d0b3f637/src/stdlib/WebSharper.JQuery/Definition.fs#L1120)

这会导致对 jQuery 的每个引用都自动拉入上述资源,并且在 https 上服务的应用程序将无法加载它。

在解决此问题之前,您可以覆盖 web.config 中对 jQuery 的引用,以使用无协议 URL:

<appsettings>
    <add key="WebSharper.JQuery.Resources.JQuery" value="//code.jquery.com/jquery-1.11.1.min.js" />
    ...

希望这对您有所帮助。