您好
我想在不一定通过其配置的公共域名的情况下测试 Discourse。例如,如果 Discourse 已安装并配置为 https://uat.mysite.com,那么我显然可以在浏览器中访问 https://uat.mysite.com,这意味着我的浏览器将从内部网络访问公共 Internet 以解析域名到其公共 IP 地址,并通过其公共 IP 地址加载页面。
我刚刚尝试通过服务器的内部 IP 地址(例如下面显示的 192.168.1.2)访问 Discourse,但由于内容安全策略(Content Security Policy)而无法加载。我收到的错误如下所示。
Refused to load the script 'http://192.168.1.2:12000/assets/locales/en-a9c88e45eb548bd7c807aecfd37d218891e213b5c1fd254857e0f16c72d73996.js' because it violates the following Content Security Policy directive: "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='". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
---------------------------------------------
| |
------------
uat.mysite.com resolves to 98.1.2.3 --> | Public IP | Server running Discourse. |
| 96.1.2.3. |
------------ |
| |
| ---------------- |
| | Private IP | |
| | 192.168.1.2 | |
---------------------------------------------
^
|
192.168.1.2 ------------------------------------------------------------
我之所以想通过服务器的内部 IP 地址访问 Discourse,是因为我想进行测试。例如,如果我想进行加载测试,不一定想加载服务于 Internet 的网络。或者,如果我想在我的笔记本电脑或构建服务器上安装一个测试实例,而不必设置 DNS。
我想我总是可以通过在 /etc/hosts 中设置自定义条目来覆盖它,但有没有办法禁用 CSP 或将其设置为信任其他源以允许测试?