我正在开发一个API(使用Node.js)并使用Socket.io和Express,我在CORS中遇到了一些错误,我在localhost中解决了Express和Socket.io 2.0,这与*一起工作。 azurewebsites.net但不再有效。
测试Express(见控制台):http://crawlerbackend.azurewebsites.net/test_cors_express_azure.html
测试Socket.io(参见控制台):http://crawlerbackend.azurewebsites.net/test_cors_socketio_azure.html
但我需要向所有人公开我的Socket.io API,因为我的客户需要它,并在Heroku中测试相同的文件:
测试Express(见控制台):https://testcrawlersite.herokuapp.com/test_cors_express_azure.html
测试Socket.io(参见控制台):https://testcrawlersite.herokuapp.com/test_cors_socketio_azure.html
我根据他们的文档遵循最佳Express和Socket.io实践。我有一个独特的结论,我需要IISNode中的配置?还是在门户网站?选项不同" CORS" (设置为*)。
这是错误:
XMLHttpRequest cannot load https://crawlerbackend.azurewebsites.net/socket.io/?EIO=3&transport=polling&t=LmW1TfL. The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin 'https://testcrawlersite.herokuapp.com' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
答案 0 :(得分:0)
您可以启用Web Sockets
让Socket.io使用WebSockets而不是长轮询。 WebSockets没有同源策略。
要使用Azure Portal启用WebSockets,请单击Web Apps刀片中的Web应用程序,然后单击所有设置> 应用程序设置。在网络套接字下,点击开启。然后点击保存。
有关详细信息,请参阅Create a Node.js chat application with Socket.IO in Azure App Service。