javascript - CORS - 从 HTTPS 到 HTTP 的跨域 POST

标签 javascript ajax https cors

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

'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods' : 'GET, POST, PUT, DELETE, OPTIONS'

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

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

有没有办法让它工作?

非常有趣的是,我可以向 HTTP 服务器发送一个 DELETE,而且它有效,只是 POST 不行! (服务器处理 'OPTION' 请求,并返回上面的 'Access' header 。DELETE 也会导致警告吐出,但请求已发送,不像 POST,请求被浏览器取消。

服务器是一个基本的 node.js 服务器。

最佳答案

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

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

只有 POST 失败的问题是一个转移注意力的问题——我现在忘记了具体情况,我上面的评论说了一些关于 POST 之后的 setTimeout 的内容。不确定,但它现在正在运行。

关于javascript - CORS - 从 HTTPS 到 HTTP 的跨域 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618642/

相关文章:

javascript - 在 IE6 中为 li 元素添加 onclick 事件

javascript - Ajax 请求的 URL 中包含奇怪的数据

php - 尝试构建一个动态的 PHP mysql_query 字符串来更新一行并取回更新的行

ssl - 如何使用haproxy解密和加密HTTPS流量?

c# - 文本框上的 jquery val() 不设置 DOM 值属性

javascript - 通过 jquery 追加 css 文件,但 css 文件不起作用

jquery - cakephp 2x + ajax 分页 + 原型(prototype) js

nginx - 为什么Docker https-portal的 “See It Work”部分给我一个 “port 443: Connection refused”错误?

python - 如何使用 WSGI 将用户从 http 重新路由到 https

javascript - 如何动态居中 div css 高度和宽度