我发送了一条ajax请求:
var responsehttpreq = {}
function createAndSendXmlHttpReq(){
requestBody = {
hostname: "prova",
pathname: "prova",
query: "prova",
method: "prova"
}
console.log("Siamo nella funzione createAndSendXmlHttpReq")
var req = new XMLHttpRequest()
req.onreadystatechange = handler
req.open("POST","http://localhost:8080",true)
req.setRequestHeader("Content-type","application/json")
req.send(JSON.stringify(requestBody))
}
function handler(){
if(this.readyState == 4 && this.status == 200){
console.log('----Risposta http------')
console.log('Status Code:'+this.status)
console.log('Dati:'+this.response)
responsehttpreq = JSON.parse(this.response)
}
}
从html页面的按钮调用createAndSendXmlHttpReq(),当我按下按钮时我没有收到任何响应,但我可以从开发者控制台看到已发送选项请求,用于CORS选项。 我已经实现了一个节点js服务器,如果选项请求发送了正确的响应:
if(req.method == "OPTIONS"){
res.setHeader("Access-Control-Allow-Origin","*")
res.setHeader("Access-Control-Allow-Methods","POST")
res.setHeader("Access-Control-Request-Headers","content-type")
res.end()
}
浏览器从服务器接收200 ok响应选项请求,但之后我的ajax post请求不会到达服务器。 有什么问题?
答案 0 :(得分:3)
res.setHeader("Access-Control-Allow-Origin","*")
响应preflight OPTIONS request的Access-Control-Allow-Origin
标头无法使用通配符。
您的浏览器的控制台应该告诉您。
您需要查看Origin
请求标头,确定您是否可以接受,然后将其用作Access-Control-Allow-Origin
标头的值。