javascript - Liferay 7 - Wildfly 10 和 "X-Content-Type-Options:nosniff"

标签 javascript jsp configuration liferay wildfly

我正在为 Wildfly 10 上的 Liferay 7 和相应的服务器配置而苦苦挣扎。

调用我的本地安装在相应的响应中为我提供以下 header :

...
X-Content-Type-Options: nosniff
...

好吧,通常我真的很感激这一点,因为它是针对跨端脚本的一个有用的安全选项,但是与 Liferay 结合使用时,这会导致浏览器控制台出现以下错误:

Refused to execute script from 'http://localhost:8080/o/frontend-js-web/liferay/available_languages.jsp?bro…e&colorSchemeId=01&minifierType=js&languageId=de_DE&b=7002&t=1471516992592' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

此错误的问题在于,当您尝试配置内容或页面时,这会导致 cms 后端无法正常工作。无法再打开相应的菜单。

会发生什么: 在上面的 jsp 文件中还包含 javascript,它不会被执行,因为上面的 header 将被浏览器尊重并因此被阻止,因为提供的 mime 类型(文本/html) 无效。

我首先在 Chrome 中调查了这个问题,从昨天开始,在更新后也在新版本的 Firefox 中调查了这个问题。

我试图在 Liferay 和 Wildfly 的配置文件中找到相应的位置并禁用它,但没有成功。无论我尝试什么, header 仍将由 Wildfly 提供。

此外,仅当我在 Liferay 中打开相应网页时才会提供此 header 。如果我在浏览器中打开 Wildfly 的管理控制台,标题就不再存在了。

所以我假装这是我的 Liferay 安装或 Liferay 本身的具体问题。有谁知道我必须修改哪个配置文件才能禁用此 header 的服务?

更新

我认为无法运行的 JavaScript 是浏览器阻止执行所包含的 JavaScript 的结果。

我打开后端/控制面板并移至“内容”。错误信息依旧存在

拒绝执行来自“http://localhost:8080/o/frontend-js-web/liferay/available_languages.jsp?br”的脚本…e&colorSchemeId=01&minifierType=js&languageId=de_DE&b=7002&t=1471516992592' 因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查。

当我现在点击一个元素时,出现以下错误

everything.jsp?browserId=other&themeId=admin_WAR_admintheme&colorSchemeId=01&minifierType=js&minifi…:80165 Uncaught TypeError: Cannot read property 'de_DE' of undefined(…)

因此,第一个错误导致 JavaScript 出现以下问题也就不足为奇了,因为未设置语言对象。但是这样会导致相应的菜单打不开。

在两者之间我找到了相应的属性

... http.header.secure.x.content.type.options ... 在您描述的“system.properties”文件中,我在“portal-ext.properies”文件中将其设置为“false”。之后我重新启动了服务器,但 header 仍然存在。

有什么想法可以在其他地方关闭此属性吗?也许我应该提到它只是一个开发环境,稍后在生产环境中我必须为此找到另一个解决方案。

最佳答案

Does anyone know which configuration file I have to adapt in order to disable the serving of this header.

即在system.properties中配置.您可以在 system-ext.properties 中更改它。如果它不存在,只需在 portal-ext.properties 旁边创建一个。

请注意

我认为这与 X-Content-Type-Options 本身没有任何关系。这个 header 是 introduced in Liferay over 3 years ago到目前为止,它已被用于许多生产环境(包括部署在 WildFly 上的环境)。

如果你注意它实际上说的错误信息

because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

因此出于某种原因,响应 MIME 类型是 text/html 而不是预期的 application/javascript。根据您提供的信息,无法判断为什么会发生这种情况。

关于javascript - Liferay 7 - Wildfly 10 和 "X-Content-Type-Options:nosniff",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40750997/

相关文章:

用于小数的 Javascript 正则表达式

jsp - 在 JSP 中是否有相当于 java @SuppressWarnings 的

javascript - 如何将 Spring Mvc Controller 5 连接到 jsp 文件?

MySql表数据到JSON的转换

java - 如何读取eclipse动态web项目中的配置文件?

c++ - Qt:从应用程序/可执行目录获取设置 ini 文件时出现问题

javascript - 未捕获的类型错误 : Cannot set property 'innerHTML' of null in phonegap

javascript - document.body.scrollHeight 在 firefox/chrome 中产生两种不同的结果

javascript - 对闭包内对象的引用

java - Grails 与另一个 Spring 应用程序的集成 - 数据源过载