2017-08-01 95 views
1

我有一个请求处理程序中设置这样的:Wakanda服务器CORS与HTTPS连接

httpServer.addRequestHandler("^/send-contact-message", "./rest-extensions/contact-messages.js", "sendContactMessage"); 

我已经建立了这样的CORS:

<cors enabled="true"> 
    <domain name="imagesreimagined.com" methods="post"/> 
</cors> 

我的服务器建立安全连接( HTTPS)设置为Accept only HTTPS from remote & allow HTTP and HTTPS from localhost。如果我从一个形式发送一个请求与action="https://imagesreimagined.store/send-contact-message",我得在浏览器中的错误,指出:

的XMLHttpRequest无法加载https://imagesreimagined.store/send-contact-message。 Access-Control-Allow-Origin不允许原产地http://imagesreimagined.com

如果我将我的服务器的安全连接(HTTPS)设置为Accept both HTTP and HTTPS connections并将表单操作更改为http,则它可以工作。但是,我需要所有远程连接都是https。

我也尝试了与443端口的CORS并得到相同的错误。

<cors enabled="true"> 
    <domain name="imagesreimagined.com:443” methods="post"/> 
</cors> 

调用Wakanda服务器的服务器不是SSL,如果这有所帮助。

+1

你的网址是'https:// imagesreimagined.store',为什么要在CORS中添加'imagesreimagined.com'而不是'imagesreimagined.store'? – Yann

+0

@Yann'imagesreimagined.store'是运行Wakanda服务器的服务器的域名。 'imagesreimagined.com'是访问Wakanda服务器的非Wakanda网站的域名。 –

+0

您是否精确定义了

'? 'get'是表单的默认值。您也可以尝试在CORS设置中添加'POST; GET'。 – Yann

回答

1

一旦我从cors域名中删除端口号,并将SSL添加到承载网站发布到Wakanda服务器的服务器,它就工作了。

0

我想这不是一个答案,而是增加更多的问题,希望它有所帮助。

这太神奇了。今天早上我登录了SO打算问这个同样的问题。我的设置稍有不同。

我有我的Wakanda服务器设置为只接受SSL连接并设置为Accept only HTTPS from remote & allow HTTP and HTTPS from localhost。 Wakanda服务器发布在端口8443上。

在同一台机器上,我有一台运行在端口80上的Apache服务器,它发布了我的Angular 2应用程序。

我花了几个小时试图让CORS工作没有成功。我还没有尝试在SSL上运行Angular应用程序,但听起来像是值得一试。

=====================

经过进一步调查,我发现这个问题。

不要在CORS定义中包含协议。

即:

而不是

<domain name="http://app.example.com" methods="post;get;put;delete"/> 

它应该是:

<domain name="app.example.com" methods="post;get;put;delete"/> 

很明显的,但真的,我没有看到很长一段时间。