从手机发送HTTP请求不像桌面那样工作(发送"选项"而不是"POST")



我有一个仪表板,它通过向服务器的其他部分发送api来工作。它是一个简单的html表单,用JavaScript处理发送一个获取请求,发送的请求由我的flask后端处理,用提供的数据完成任务。

问题是,当请求在桌面上发送时,它可以正常工作。当我在iPhone中使用google chrome发送请求时,请求没有正确发送。它发送的不是一个POST请求,而是一个OPTIONS请求。

服务器日志显示:"OPTIONS/api/message HTTP/1.1"与桌面版的"POST/api/message HTTP/1.1">

下面是JavaScript代码:
const options = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify( params )  
};
fetch('https://myUrl.com/api/message', options )
.then( response => response.text() )
.then(response => {
if (response == 'SUCCESS') {
console.log(response)
sessionStorage.setItem("success", "true"); 
window.location.reload()
} else {
sessionStorage.setItem("error", response)
window.location.reload()
}
})

我猜浏览器发送了一个飞行前请求。

桌面的不同行为&手机可能是由浏览器供应商实现的一些只针对手机的优化来解释的。

正在发送飞行前请求。我相信这是因为我使用的是HTTP而不是HTTPS,请求发送到HTTPS。

最新更新