gpt4 book ai didi

javascript - 在 javascript 中使用跨源的 http post 请求

转载 作者:搜寻专家 更新时间:2023-11-01 04:38:42 25 4
gpt4 key购买 nike

我在 firefox 中的 http post 调用有问题。我知道当存在交叉来源时,firefox 首先在 POST 之前执行 OPTIONS 以了解 access-control-allow header 。使用这段代码我没有任何问题:

Net.requestSpeech.prototype.post = function(url, data) {
if(this.xhr != null) {
this.xhr.open("POST", url);
this.xhr.onreadystatechange = Net.requestSpeech.eventFunction;
this.xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
this.xhr.send(data);
}
}

我使用调用此函数的简单 html 测试此代码。一切正常,我有 OPTIONS 和 POST 的响应,我处理响应。但是,我正在尝试将此代码与使用 jquery 的现有应用程序集成(我不知道这是否是一个问题),在这种情况下执行发送(数据)时,浏览器(firefox)执行相同的操作,首先执行一个 OPTION 请求,但在这种情况下没有收到服务器的响应并将此消息放入控制台:

[18:48:13.529] OPTIONS http://localhost:8111/ [undefined 31ms]

未定义...未定义是因为没有收到响应,但代码是相同的,我不知道为什么在这种情况下选项没有收到响应,有人有想法吗?

我调试了我的服务器应用程序,并且 OPTIONS 可以正常到达服务器,但浏览器似乎没有等待响应。

稍后再编辑:好的,我认为问题是当我使用带有 SCRIPT 标记的简单 html 运行时调用执行请求的方法运行正常,但在这个没有收到响应的应用程序中,我有一个表单执行 onsubmit 事件,我认为提交事件返回速度非常快,浏览器没有时间获取 OPTIONS 请求。

稍后再编辑:WTF,我解决了使 POST 请求同步的问题:

this.xhr.open("POST", url, false);

提交响应非常快,等不及浏览器的 OPTION 响应,对此有什么想法吗?

最佳答案

由于同源政策,您不能发送跨源帖子,您可以通过在 iframe 中包含站点(如果可以访问该域)来解决它,原始站点包含到外部站点的 iframe,内部方向是合法的。

关于javascript - 在 javascript 中使用跨源的 http post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231434/

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