作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 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/
我是一名优秀的程序员,十分优秀!