Dailymotion API-CORS:服务器具有访问控制允许源代码:*但ajax请求未通过相同的源代码
这可能是dailymotion API出现的问题: 请看这里: 在上面的问题中,解决方案是JSONP,但是对于POST请求,它在这里不起作用 从我在浏览器外的测试请求来看,服务器似乎确实接受CORS请求,但是我的Ajax请求始终失败,无论我如何处理这些选项 我的ajax设置:Dailymotion API-CORS:服务器具有访问控制允许源代码:*但ajax请求未通过相同的源代码,cors,same-origin-policy,dailymotion-api,Cors,Same Origin Policy,Dailymotion Api,这可能是dailymotion API出现的问题: 请看这里: 在上面的问题中,解决方案是JSONP,但是对于POST请求,它在这里不起作用 从我在浏览器外的测试请求来看,服务器似乎确实接受CORS请求,但是我的Ajax请求始终失败,无论我如何处理这些选项 我的ajax设置: type:"POST", //I tried without this parameter xhrFields: { //I
type:"POST",
//I tried without this parameter
xhrFields: {
//I tried with false
withCredentials: true
},
processData: false,
//I tried with the correct content type of 'multipart/form-data',
contentType: false,
//I tried with this enabled(and without)
//crossDomain:true,
浏览器外的示例请求(注意CORS设置看起来不错)
Ajax错误:
DAILYMOTION Object { readyState: 0, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 10 more… } error Exception { message: "", result: 2153644038, name: "", filename: "https://ajax.googleapis.com/ajax/li…", lineNumber: 4, columnNumber: 0, inner: null, data: null, stack: ".send@/ajax-googleapis-com/a…" } dmupload.js:98:12
"DAILYMOTION[object Object]error[Exception... "<no message>" nsresult: "0x805e0006 (<unknown>)" location: "JS frame :: ajax-googleapis-com/ajax/libs/jquery/2.1.4/jquery.min.js :: .send :: line 4" data: no]"
更新:我得到了要通过的选项请求,我放弃了jquery,只使用ajax,使用以下代码:
var xhr = new XMLHttpRequest();
xhr.open('POST', myUrl2, true);
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
//xhr.setRequestHeader('X-Upload-Content-Length', blob.size);
// xhr.setRequestHeader('X-Upload-Content-Type', blob.type);
xhr.onload = function(e) {
if (e.target.status < 400) {
var location = e.target.getResponseHeader('Location');
} else {
alert("err10")
}
};
xhr.onerror = function(e) {
alert("err1", e)
};
xhr.send({'file': blob});
var xhr=new-XMLHttpRequest();
xhr.open('POST',myUrl2,true);
setRequestHeader('Authorization'、'Bearer'+令牌);
setRequestHeader('Content-Type','multipart/formdata');
//xhr.setRequestHeader('X-Upload-Content-Length',blob.size);
//setRequestHeader('X-Upload-Content-Type',blob.Type);
xhr.onload=函数(e){
如果(如目标状态<400){
var location=e.target.getResponseHeader('location');
}否则{
警报(“错误10”)
}
};
xhr.onerror=函数(e){
警报(“错误1”,e)
};
send({'file':blob});
更新2:
现在我可以发送POST请求,但无法读取响应。我想我仍然可以使用回调功能,这样就没关系了,但那不起作用。这是一个解释性的屏幕截图和我的新代码。
var fd4=new FormData();
console.log(blob)
fd4.追加(“文件”,blob);
var xhr=new XMLHttpRequest();
xhr.open('POST',myUrl2,true);
setRequestHeader('Content-Type','multipart/formdata');
//xhr.withCredentials=true;
setRequestHeader('Content-Length',blob.size);
//setRequestHeader('X-Upload-Content-Type',blob.Type);
xhr.onload=函数(e){
log(“HEADERS”,例如target.getAllResponseHeaders())
如果(如目标状态<400){
var location=e.target.getResponseHeader('location');
//sendFile(blob,blobl.size,blob.type,myUrl2);
}否则{
警报(“错误10”)
}
};
xhr.onerror=函数(e){
log(“HEADERS”,例如target.getAllResponseHeaders())
警报(“错误1”,e)
};
xhr.send(fd4);
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://upload-01.sv6.dailymotion.com/upload?uuid=6513ac948c1c71afdfca3be8d359d0a5&seal=12dc43863f90d931f63e6492cdb40a9e?access_token=dXgDWFQYX1gPVRxOUBpaEQlFER5ZQ0hHCg. (Reason: CORS request failed).
var xhr = new XMLHttpRequest();
xhr.open('POST', myUrl2, true);
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
//xhr.setRequestHeader('X-Upload-Content-Length', blob.size);
// xhr.setRequestHeader('X-Upload-Content-Type', blob.type);
xhr.onload = function(e) {
if (e.target.status < 400) {
var location = e.target.getResponseHeader('Location');
} else {
alert("err10")
}
};
xhr.onerror = function(e) {
alert("err1", e)
};
xhr.send({'file': blob});
var fd4 = new FormData();
console.log(blob)
fd4.append("file", blob);
var xhr = new XMLHttpRequest();
xhr.open('POST', myUrl2, true);
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
//xhr.withCredentials = true;
xhr.setRequestHeader('Content-Length', blob.size);
// xhr.setRequestHeader('X-Upload-Content-Type', blob.type);
xhr.onload = function(e) {
console.log("HEADERS", e.target.getAllResponseHeaders())
if (e.target.status < 400) {
var location = e.target.getResponseHeader('Location');
//sendFile_(blob, blobl.size, blob.type, myUrl2);
} else {
alert("err10")
}
};
xhr.onerror = function(e) {
console.log("HEADERS", e.target.getAllResponseHeaders())
alert("err1", e)
};
xhr.send(fd4);