AJAX 发布不适用于 HTTPS

标签 ajax jquery

我在使用 jquery post 函数时遇到了一个相当令人沮丧的问题,这可能源于不理解它如何正确工作。

我有一个函数,可以将一些表单信息发布到我编写的 php 脚本中,然后该脚本针对 API 运行curl 请求,以绕过 javascript 的跨域策略。只要提交到“http”,它似乎就可以正常工作,但是当我将其发送到“https”时,表单永远不会被提交。

我在我的计算机上运行wireshark,它显示没有流向目标IP的流量,直到我使URL使用http。我在服务器上有基本身份验证,因此我通过 url 传递用户和密码,但在没有该身份验证的情况下进行了测试,并得到了相同的结果。

这是不起作用的代码:

$j.post("https://<api user>:<password>@<ip>:444/ProxyScript.php", 
         $j("#spoke_ticket").serialize(),
         function(msg) { 
              log_status(msg);
              fade_status();
              $j(':input','#createtheticket')
                   .not(':button, :submit, :reset, :hidden')
                   .val('')
                   .removeAttr('checked')
                   .removeAttr('selected');
               });

这是工作函数:

$j.post("http://<other ip>/ProxyScript.php",  
        $j("#spoke_ticket").serialize(),
        function(msg) { 
              log_status(msg);
              fade_status();
              $j(':input','#createtheticket')
                   .not(':button, :submit, :reset, :hidden')
                   .val('')
                   .removeAttr('checked')
                   .removeAttr('selected');
               });

关于为什么没有发送流量有什么想法吗? 如果我遗漏了一些关键信息或任何内容,请告诉我。

感谢您的帮助

最佳答案

如果您正在执行从 http 页面到 https URL 的 AJAX post,那么跨域策略就会生效,因为该协议(protocol)也是源规范的一部分,如 here 中所述。 。浏览器将拒绝进行 AJAX 调用,因此您看不到任何流量。

这里讨论了一个解决方案:

Ajax using https on an http page

所以你最好的选择是 Access-Control-Allow-Origin现在大多数现代浏览器都应该支持 header 。

因此,让您的服务器将以下 header 添加到响应中:

Access-Control-Allow-Origin: https://www.mysite.com

如果由于某种原因您无法强制执行此操作,那么剩下的唯一选择就是 JSONP .

关于AJAX 发布不适用于 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943274/

相关文章:

javascript - 如何有条件地使用javascript在网页上的选定单词上显示鼠标悬停工具提示?

jquery - 当在输入字段中输入3个字符时用jquery触发事件

javascript - 带有 json 数据的 axios post 请求

javascript - DataTables 动态添加列到表

javascript - 为什么 jQuery 返回数据没有按预期工作?

javascript - 如何循环遍历不同的 iframe?

javascript - Jquery - 检查选择器是否以数字结尾

javascript - Bootstrap slider 不工作: slider is not a function

java - 如何在 Java 中将 View 文件输出为 ajax 响应?

javascript - Chrome 上的 AJAX 错误消息,启用了 MIME 类型检查