我有一个仪表板,它通过向服务器的其他部分发送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。