CORS - 从HTTPS跨域POST到HTTP

sve*_*son 5 javascript ajax https cors

我正在尝试使用HTTP URL从使用HTTPS加载到不同域的页面使用XmlHTTPRequest POST.HTTP服务器是本地(在家中)服务器,因此它不能是HTTPS.(这是一个原型/演示 - 家庭HTTP服务器可能会在机顶盒中).我的服务器返回:

'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods' : 'GET, POST, PUT, DELETE, OPTIONS'
Run Code Online (Sandbox Code Playgroud)

当我发布时,似乎浏览器已取消该请求.我在控制台中看到了这个警告:

页面位于'https://xxx.html'通过HTTPS加载,但显示的内容不安全'http://localhost:10293/yyy':此内容也应通过HTTPS加载.

有没有办法让这项工作?

关于这一点非常有趣的是我可以向HTTP服务器发送DELETE,它可以工作,而不是POST!(服务器处理'OPTION'请求,并返回上面的'Access'标题.DELETE也会导致警告吐出,但发送请求的次数不同于POST,浏览器取消了请求.

服务器是基本的node.js服务器.

sve*_*son -1

我能够通过在我的 HTTP 服务器中处理 OPTIONS 请求来完成这项工作:

    response.writeHead(200, {
        'Content-Type': 'text/html', 
        'Access-Control-Allow-Origin': '*', 
        'Access-Control-Allow-Methods' : 'GET, POST, PUT, DELETE, OPTIONS'
    });
    response.end();
Run Code Online (Sandbox Code Playgroud)

只有 POST 失败的问题是一个转移注意力的问题 - 我现在忘记了具体情况,我上面的评论说了一些关于 POST 之后立即设置超时的内容。不确定,但它现在正在工作。

  • 事实上,我刚刚重新测试了一下,最新版本的 Chrome 浏览器不允许这样做。我现在收到的错误是:混合内容:“https://zzzzzz”的页面是通过 HTTPS 加载的,但请求了不安全的 XMLHttpRequest 端点“http://xxxxx”。该请求已被阻止;内容必须通过 HTTPS 提供。 (4认同)