3

我开发了一个 Javascript 库,可以在我的其他一些站点中使用。这是一个 Grails 应用程序。可以通过 HTTPS 访问 grails 应用程序。但是,在 HTTPS 中引用 JS 文件时会出现问题。

包含 JS 库时,例如:

https://foo.my.domain/appcontext/static/js/myjslib.js

Grails 将此请求重定向到:

http://foo.my.domain/appcontext/static/bundle-bundle_application_defer.js

请注意导致“不安全”警告的 HTTPS -> HTTP,并且 js lib 在例如 chrome 和 IE 中被阻止。

如果我参考

https://foo.my.domain/appcontext/static/bundle-bundle_application_defer.js

直接,它工作正常!

引用静态内容时,如何强制 grails 不进行此 https -> http 重定向?

4

2 回答 2

0

只需使用

<g:javascript src="myjslib.js" />. 

js 文件应该在 web-app/js 文件夹下

文档在这里: http: //grails.org/doc/latest/ref/Tags/javascript.html

干杯

于 2013-01-23T11:35:47.230 回答
0

我也遇到了这个问题。我们正在包含来自导致 Chrome 出现问题的遗留应用程序的 JS 和 CSS。

在我们的例子中,我们有一个执行 ssl 加密的 nginx 代理,因此配置 Spring / Acegi 不是一个选项。下面的 curl 会话(经过编辑以删除我们的服务器名称/地址)显示了从 https 到 http 的重定向。

$ curl -v https://FOO.com/ess/js/framework/Widgets/Suggest.DropDown.js
* About to connect() to FOO.com port 443 (#0)
...
 GET /ess/js/framework/Widgets/Suggest.DropDown.js HTTP/1.1
...
 HTTP/1.1 302 Found
 Server: nginx/1.4.1
 Date: Fri, 31 May 2013 19:24:40 GMT
 Content-Length: 0
 Connection: keep-alive
 Location: http://FOO.com/ess/static/js/framework/Widgets/Suggest.DropDown.js

我想出的解决方案是使用 Config.groovy 中的排除模式从资源插件中排除遗留资源,如下所示:

grails.resources.adhoc.patterns = ['/images/*', '/css/*', '/js/*', '/plugins/*']
grails.resources.adhoc.excludes = [ '/css/framework/**', '/js/framework/**' ]

此处的更多文档:http: //grails-plugins.github.io/grails-resources/guide/9.%20Configuration.html

于 2013-05-31T19:36:06.840 回答