创建配置文件
在创建或编辑 application.conf 文件时,请使用纯文本编辑器(例如 gedit、vim、emacs 或记事本)。不要使用 Microsoft Word 或 Evernote 等字处理软件,因为这些软件会插入额外字符,导致服务器端组件无法读取该文件。TinyMCE 服务器端组件需要配置文件才能正常工作。按照惯例,此文件名为 application.conf。
此配置文件要求您输入以下 至少 信息:
allowed-origins- 允许与服务器端编辑器功能通信的域名。这是所有服务器端组件所必需的。
Enhanced Media Embed 服务器端组件需要额外的配置,详细信息可在 Enhanced Media Embed 页面 找到。
allowed-origins(必需)
TinyMCE 编辑器实例通过执行跨域 HTTP 请求来使用服务器端组件。这些请求受一种称为跨源资源共享 (CORS) 的 HTTP 访问控制形式的约束。CORS 内置于 Web 浏览器中,并非 TinyMCE 服务器端组件的功能。有关 CORS 的详细解释,请参阅 Mozilla Developer Network。
allowed-origins 元素配置了服务器端组件在来自您的 TinyMCE 实例的 HTTP Origin 标头中预期接收的 所有 值列表(有关 HTTP Origin 标头的更多信息,请参阅 Mozilla Developer Network)。简而言之,您需要提供将服务您的 TinyMCE 实例的所有 URL 列表,但不包含路径信息。
当服务针对allowed-origins列表进行匹配时,默认情况下会 忽略scheme(例如 http)和port(例如 800)。使用ephox.allowed-origins.ignore-port选项自定义此行为。
下面通过一些示例来说明:
如果用户从以下 URL 加载 TinyMCE:
http://server.example.com/editor.phphttp://server.example.com/subpage/editor.php
请将 server.example.com 添加到 allowed-origins 列表。
如果用户从以下 URL 加载 TinyMCE:
https://server.example.com/editor.phphttp://server.example.com/subpage/editor.php
请将 server.example.com 添加到 allowed-origins 列表,因为 scheme 会被忽略。
如果用户从以下 URL 加载 TinyMCE:
https://server.example.com/editor.phphttps://server.example.com/
请将 server.example.com 添加到 allowed-origins 列表。
如果用户从以下 URL 加载 TinyMCE:
http://oneserver.example.com/editor.phphttp://twoserver.example.com/subpage/editor.php
请将 oneserver.example.com 和 twoserver.example.com 添加到 allowed-origins 列表。
如果用户从以下 URL 加载 TinyMCE:
http://server.example.com:8080/editor.php
请将 server.example.com 添加到 allowed-origins 列表,因为端口会被忽略。
如果用户从以下 URL 加载 TinyMCE:
https://server.example.com:9000/editor.php
请将 server.example.com 添加到 allowed-origins 列表,因为 scheme 和端口都会被忽略。
| 类型 | 设置 | 描述 |
|---|---|---|
element |
| 存储 CORS 设置信息 |
attribute |
| 包含服务器端组件可能预期的 HTTP Origin 标头所有可能值的字符串数组。 |
示例:
ephox {
allowed-origins {
origins = [ "myserver", "myserver.example.com", "myotherserver", "mysecureserver" ]
}
}通配符支持
* 通配符字符可匹配任何值。在 allowed-origin 列表条目的以下部分中支持通配符:
作为域名的前缀(例如
*.example.com)。作为唯一字符(例如
*)。这将允许 任何 Origin 访问服务器端组件。
选项 2 允许一组广泛的 Origin 访问服务器端组件,不推荐 用于生产部署。
ephox {
allowed-origins {
origins = [ "myserver", "*.mydomain.example.com" ]
}
}正则表达式支持
可以使用正则表达式与通配符一起指定 allowed-origins.origins。要使用正则表达式,请用正斜杠 '/' 字符开始和结束表达式。
例如:
ephox {
allowed-origins {
origins = [ "myserver", "/(myserver|myotherserver\.)?example\.com/" ]
}
}有关有效结构的列表,请参阅:Java 8: java.util.regex - 正则表达式结构摘要。
allowed-origins.same-origin(可选)
启用 same-origin 后,如果服务是从同一服务器部署的,则无需指定访问服务的域来源。
allowed-origins 的 same-origin 选项可用于阻止所有跨域请求。此选项默认为 false。
将 same-origin 设置为 true 将阻止所有 HTTP OPTIONS 请求并允许所有其他 HTTP 方法。当设置为 true 时,allowed-origins 中指定的所有 origins 都将被忽略。
例如:
ephox {
allowed-origins {
same-origin: true
}
}allowed-origins.ignore-port(可选)
若要强制对服务的 allowed-origins 进行端口检查,请将 ignore-port 设置为 false。当 ignore-port 设置为 false 时,所有 allowed-origins 必须 包含 Origin 的端口。
此选项默认为 true,因此 allowed-origins 中指定的端口会被忽略。
例如:
ephox {
allowed-origins {
origins = ["myserver:8000", "myserver:8001"]
ignore-port = false
}
}排查 Origin 问题
如果您遗漏了某个 Origin 或错误地指定了某个 Origin,则依赖于服务器端组件的 TinyMCE 功能将无法从该 Origin 工作。如果您观察到对服务器端组件的请求失败或功能不可用,且不确定原因,请参阅关于 使用浏览器工具调查服务问题 的故障排除信息。