Javascript CORS请求

问题描述:

我有一个启用了CORS的php web服务。Javascript CORS请求

我用http://www.test-cors.org/来确认Web服务的工作。根据这项服务XHR加载事件发射和状态代码为200

我复制了测试一个Cors生成的代码到在线JavaScript控制台https://repl.it/languages/javascript

在这里,我总是XHR状态接收0。

基于Test Cors,我的web服务设置为允许跨源。但是,当我使用在线JavaScript控制台相同的Web服务返回状态代码0.

是否有原因,为什么此代码不起作用?

var createCORSRequest = function(method, url) { 
    var xhr = new XMLHttpRequest(); 

    if ("withCredentials" in xhr) { 
    //This part is called correctly 
    xhr.open(method, url, true); 
    } 

    return xhr; 
}; 

var url = <URL> 
var method = 'GET'; 
var xhr = createCORSRequest(method, url); 

xhr.loadstart = function() { 
    //Not called 
} 
xhr.onload = function() { 
    //Not called 
}; 

xhr.onerror = function() { 
    // Called 
}; 

xhr.send(); 

alert(xhr.status) 
+3

因为在提出实际请求之前您正在发出警报?也很好奇'在线JavaScript编译器'是什么。 –

+0

加 - 我只在打开电话之前附加了回调。 xhr =新的XMLHttpRequest。 xhr.loadstart = function().... xhr.open(method)... xhr.send()。 – ripvlan

+0

@JaredSmith我的意思是说控制台不是编译器。通过上面的代码,调用xhr.onerror。即使我在调用后移动xhr.status的警报,警报仍然是0 – HShhanick

你的状态告警是由您发送之前(因此接收)的要求,因此状态还没有设置,你会得到0 所有快讯/检查需要在里面的onload /的onerror ,当请求完成时执行它们。