创建配置文件

在创建或编辑 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.php

  • http://server.example.com/subpage/editor.php

请将 server.example.com 添加到 allowed-origins 列表。

如果用户从以下 URL 加载 TinyMCE:

  • https://server.example.com/editor.php

  • http://server.example.com/subpage/editor.php

请将 server.example.com 添加到 allowed-origins 列表,因为 scheme 会被忽略。

如果用户从以下 URL 加载 TinyMCE:

  • https://server.example.com/editor.php

  • https://server.example.com/

请将 server.example.com 添加到 allowed-origins 列表。

如果用户从以下 URL 加载 TinyMCE:

  • http://oneserver.example.com/editor.php

  • http://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

allowed-origins

存储 CORS 设置信息

attribute

origins

包含服务器端组件可能预期的 HTTP Origin 标头所有可能值的字符串数组。

示例:

ephox {
  allowed-origins {
    origins = [ "myserver", "myserver.example.com", "myotherserver", "mysecureserver" ]
  }
}

通配符支持

* 通配符字符可匹配任何值。在 allowed-origin 列表条目的以下部分中支持通配符:

  1. 作为域名的前缀(例如 *.example.com)。

  2. 作为唯一字符(例如 *)。这将允许 任何 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 工作。如果您观察到对服务器端组件的请求失败或功能不可用,且不确定原因,请参阅关于 使用浏览器工具调查服务问题 的故障排除信息。