从数据库取回数据时遇到问题。我正在尽力解释这个问题。
1.如果在下面的代码中保留“ mode”:“ no- cors”,则可以使用Postman从服务器获取数据,而不能使用自己的服务器获取数据。认为这一定是我的客户端错误
Quick Browsing建议将“ mode”:“ no-cors”置于此位置,该错误已得到解决,但这样做不正确。
所以我想也许有人对如何解决这个问题提出了建议。
真的希望我已经足够清楚,但是可以肯定的是,我在这里没有给出明确的解释:
function send(){ var myVar = {"id" : 1}; console.log("tuleb siia", document.getElementById('saada').value); fetch("http://localhost:3000", { method: "POST", headers: { "Access-Control-Allow-Origin": "*", "Content-Type": "text/plain" },//"mode" : "no-cors", body: JSON.stringify(myVar) //body: {"id" : document.getElementById('saada').value} }).then(function(muutuja){ document.getElementById('väljund').innerHTML = JSON.stringify(muutuja); }); }
添加mode:'no-cors'到请求标头可确保在响应中没有可用的响应
mode:'no-cors'
添加“非标准”标头后,该行将'access-control-allow- origin'触发OPTIONS预检请求,您的服务器必须正确处理该预检请求,才能发送POST请求
'access-control-allow- origin'
你也做fetch不对...... fetch返回了一个“承诺” Response这对于承诺的创造者对象json,text等等。根据内容类型…
fetch
Response
json
text
简而言之,如果您的服务器端能够正确处理CORS(从您的注释中可以看出来),则应该可以进行以下操作
function send(){ var myVar = {"id" : 1}; console.log("tuleb siia", document.getElementById('saada').value); fetch("http://localhost:3000", { method: "POST", headers: { "Content-Type": "text/plain" }, body: JSON.stringify(myVar) }).then(function(response) { return response.json(); }).then(function(muutuja){ document.getElementById('väljund').innerHTML = JSON.stringify(muutuja); }); }
但是,由于您的代码对JSON并没有真正的兴趣(毕竟它将对象字符串化),因此操作起来更简单
function send(){ var myVar = {"id" : 1}; console.log("tuleb siia", document.getElementById('saada').value); fetch("http://localhost:3000", { method: "POST", headers: { "Content-Type": "text/plain" }, body: JSON.stringify(myVar) }).then(function(response) { return response.text(); }).then(function(muutuja){ document.getElementById('väljund').innerHTML = muutuja; }); }