所以我有一个需要与桌面应用程序通信的GWT webapp。为此,桌面程序在给定端口(例如,http://localhost:9000
)启动Web服务器。
我已经实现了JSON-P通信来绕过跨域过滤器,这在本地测试时工作正常(webapp在http://localhost:8888
运行)。问题是,生产网站是通过https提供的,没有浏览器允许您通过https从http请求javascript。
所以我尝试了一些事情。
我在服务于GWT javascript的服务器和javascript尝试向其发出请求的服务器以及发出HTTP请求时,使用Java HttpServletResponse.addHeader("Access-Control-Allow-Origin", "*")
设置了“Access-Control-Origin:*”标头,但是它被相同的原始过滤器阻止(因为我试图从https向http发出请求,因此可以推测)。
我试图从一个新的窗口(通过调用$ wnd.open创建)中使用Json-P通信而没有一个URL希望它会加载http,但它是通过https加载的,所以我遇到了同样的问题像以前一样的问题。
有没有办法通过https向http服务的javascript提出跨域请求?没有任何可行的方法在localhost上运行https(在签署JSON-P请求时,自签名证书被阻止。)
答案 0 :(得分:1)
假设您部署的计算机具有Internet访问权限,此问题的最佳解决方案是在托管webapp的主站点上注册子域(例如,localhost.example.com)并设置DNS条目指向127.0.0.1。然后,您可以获取localhost.example.com的已签名https证书,并将该证书与您的应用程序一起分发。
警告语: