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)
答
你的状态告警是由您发送之前(因此接收)的要求,因此状态还没有设置,你会得到0 所有快讯/检查需要在里面的onload /的onerror ,当请求完成时执行它们。
因为在提出实际请求之前您正在发出警报?也很好奇'在线JavaScript编译器'是什么。 –
加 - 我只在打开电话之前附加了回调。 xhr =新的XMLHttpRequest。 xhr.loadstart = function().... xhr.open(method)... xhr.send()。 – ripvlan
@JaredSmith我的意思是说控制台不是编译器。通过上面的代码,调用xhr.onerror。即使我在调用后移动xhr.status的警报,警报仍然是0 – HShhanick