javascript - Hämta bilddata från en annan domän med AJAX-förfrågan
Jag försöker få binär data av en bild från en annan domän med en AJAX-förfrågan. Jag har försökt olika metoder, men det fanns ingen fungerande lösning. Jag hittade lite kod på internet som såg bra ut, men även med dessa anrop får jag fel.
Vad gör jag fel? Finns det ett standardiserat sätt att göra detta?
Här är vad jag har försökt hittills:
var request = this.createCORSRequest('GET', 'http://url/to/image.png');
request.onload = function () {
var text = request.response;
};
request.onerror = function (error) {
alert('Woops, there was an error making the request.');
};
request.send();
private createCORSRequest(method, url) {
var xhr: XMLHttpRequest = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// Check if the XMLHttpRequest object has a "withCredentials" property.
// "withCredentials" only exists on XMLHTTPRequest2 objects.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// Otherwise, check if XDomainRequest.
// XDomainRequest only exists in IE, and is IE's way of making CORS requests.
var xdhr = new XDomainRequest();
xdhr.open(method, url);
} else {
// Otherwise, CORS is not supported by the browser.
xhr = null;
}
return xhr;
}
Jag hittade till och med denna lösning utan ajax här på Stackoverflow, men den fungerar inte för mig:
Ladda bilder asynkront med jQuery
Här är en skärm av egenskaperna som felhändelsen innehåller:
Mitt mål är att få binärdata av en bild från en URL som jag får från ett atomflöde. Jag behöver binärerna för att kopiera bilden till MS SharePoint.
Svar #1
Du kan inte hämta data från en annan domän om inte:
- den fjärranslutna servern tillåter det med hjälp av CORS
- du kör din webbläsare i ett osäkert läge.
Orsak: annars skulle webbplats A kunna (ondsint) läsa användardata från webbplats B
Svar #2
Du måste lägga till rubriker till metoden för att tillåta förfrågningar från andra domäner. Till exempel, om du försöker hämta data från www.example.com/main.php, måste du lägga till rubriker för att tillåta att dessa metoder kan anropas från en annan domän.
