У меня есть два веб-сайта:
1) httpwebsite.com, где я запускаю свое веб-приложение, которое использует APACHE, PHP и MYSQL;
2) wss.com, где я запускаю сервер узла nodeJS, используемый для многопользовательской игры;
Я хочу разместить файлы на стороне клиента javascript, которые взаимодействуют с сервером websocket, на httpwebsite.com, поэтому мне не нужно настраивать HTTP-сервер на узлеJS по многим причинам, например, безопасность и отсутствие опыта использования nodeJS в качестве HTTP-сервера,
Я хочу использовать nodeJS только для сервера websocket, для удобства производительности и гибкости, среди многих других.
Я слышал, что политика одинакового происхождения ограничивает связь с httpwebsite.com с помощью wss.com, но может ли она быть переконфигурирована, чтобы фактически разрешить связь между двумя разными доменами, которые хотят общаться друг с другом нарочно?
Есть ли у меня другие возможности, чем запуск HTTP-сервера на сервере nodeJS?
Вы можете использовать CORS для защищенных запросов из одного домена в другой домен.
2 варианта:
Вы можете добавить заголовки CORS на wss.com, чтобы разрешить доступ к веб-сайту, чтобы загрузить его ресурсы. Ссылка Мэтта должна объяснить, как это работает, и вам просто нужно добавить этот HTTP-заголовок на каждый сервер узла, к которому вам нужно получить доступ.
Вы можете проксировать свои запросы через сервер Apache на сервере узлов. Поэтому веб-браузер думает, что он разговаривает с сервисом по одному и тому же происхождению. Это часто используется только для того, чтобы ваш веб-сервер публично доступен, а ваш сервер приложений (работающий узел) не был напрямую доступен и защищен за брандмауэром, хотя, очевидно, Apache должен иметь доступ к нему.
Вы можете использовать эту конфигурацию в Apache для достижения варианта 2 для перенаправления вызовов http://website.com/api на службу, запущенную в wss.com на порту 3000.
#send all /api requests to node
ProxyPass /api http://wss.com:3000
#Optionally change all references to wss.com to this domain on return:
ProxyPassReverse /api http://wss.com:3000