gpt4 book ai didi

AJAX 发布不适用于 HTTPS

转载 作者:行者123 更新时间:2023-12-03 22:27:53 26 4
gpt4 key购买 nike

我在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com