Привет
Я хотел бы провести тестирование Discourse, не обязательно используя его настроенное публичное доменное имя. Например, если Discourse установлен и настроен как https://uat.mysite.com, то я, конечно, могу открыть браузер и перейти по адресу https://uat.mysite.com. В этом случае мой браузер выйдет из моей внутренней сети в публичный интернет, чтобы разрешить доменное имя до его публичного IP-адреса, и загрузит страницы через этот публичный IP.
Я только что попробовал открыть Discourse через внутренний IP-адрес сервера (например, 192.168.1.2, показанный ниже), и, как и следовало ожидать, он не загрузился из-за политики безопасности контента (Content Security Policy). Ошибки, которые я получаю, имеют следующий вид:
Загрузка скрипта 'http://192.168.1.2:12000/assets/locales/en-a9c88e45eb548bd7c807aecfd37d218891e213b5c1fd254857e0f16c72d73996.js' отклонена, так как это нарушает следующую директиву политики безопасности контента: "script-src http://uat.mysite.com/logs/ http://uat.mysite.com/sidekiq/ http://uat.mysite.com/mini-profiler-resources/ http://uat.mysite.com/assets/ http://uat.mysite.com/brotli_asset/ http://uat.mysite.com/extra-locales/ http://uat.mysite.com/highlight-js/ http://uat.mysite.com/javascripts/ http://uat.mysite.com/plugins/ http://uat.mysite.com/theme-javascripts/ http://uat.mysite.com/svg-sprite/ 'sha256-rwfDVOTzygQmkOwFNAeX564B66beHoel4+gRLgQUgHg='". Обратите внимание, что 'script-src-elem' явно не установлен, поэтому в качестве резервного варианта используется 'script-src'.
---------------------------------------------
| |
------------
uat.mysite.com разрешается в 98.1.2.3 --> | Публичный IP | Сервер с запущенным Discourse. |
| 96.1.2.3. |
------------ |
| |
| ---------------- |
| | Частный IP | |
| | 192.168.1.2 | |
---------------------------------------------
^
|
192.168.1.2 ------------------------------------------------------------
Причина, по которой я хочу получить доступ к Discourse через внутренний IP-адрес сервера, заключается в том, что я хочу проводить тестирование. Например, если я хочу провести нагрузочное тестирование, мне не обязательно нагружать сеть, обслуживающую интернет. Или, если я хочу установить тестовый экземпляр на свой ноутбук или сервер сборки без необходимости настройки DNS.
Я думаю, что всегда можно обойти это, добавив пользовательскую запись в /etc/hosts, но есть ли способ либо отключить CSP, либо настроить её на доверие другим источникам для разрешения тестирования?