Chrome 확장 프로그램 중 하나를 포팅 중이며 AJAX 쿼리에 약간의 문제가 있습니다. 다음 코드는 FF 확장 프로그램에서 정상적으로 작동하지만 Chrome에서는 '0'상태로 실패합니다.크롬 확장 프로그램 내에서 jQuery.ajax 호출이 실패합니다.
function IsImage(url) {
var isImage = false;
var reImageContentType = /image\/(jpeg|pjpeg|gif|png|bmp)/i;
var reLooksLikeImage = /\.(jpg|jpeg|gif|png|bmp)/i;
if(!reLooksLikeImage.test(url))
{
return false;
}
var xhr = $.ajax({
async: false,
type: "HEAD",
url: url,
timeout: 1000,
complete : function(xhr, status) {
switch(status)
{
case "success":
isImage = reImageContentType.test(xhr.getResponseHeader("Content-Type"));
break;
}
},
});
return isImage;
}
확장의이 특별한 부분은 클립 보드 (I 이미 해결 한 다른 크롬 문제)에 무엇을 확인하고, 이미지의 URL이 있다면, 그것은 HEAD 요청을 전송하고 "콘텐츠 형식"응답을 확인 머리글을 사용하여 이미지인지 확인하십시오. 그렇다면 IMG 태그에 클립 보드 텍스트를 붙여 넣어 true를 반환합니다. 그렇지 않은 경우 이미지가 아닌 일반 URL처럼 보이면 A 태그로 래핑합니다. URL이 아닌 경우 일반 붙여 넣기 만 수행합니다.
어쨌든, 확인되는 URL은 분명 이미지이며 FF에서는 정상적으로 작동하지만 기능이 완료되면 xhr.status는 "0"이고 상태는 "오류"입니다. 시간 초과를 10 초로 올리는 것은 도움이되지 않습니다.
curl -i -X HEAD <imageURL>
나는 또한 내가 성공 대신 전체의 오류 콜백을 사용한다 알고 있지만, 그들은 하나가 작동하지 않습니다 나는 실행할 때 테스트 이미지는 "이미지/JPEG"로 돌아올해야합니다 확인했습니다. 어떤 아이디어?
extention의 모든 AJAX 요청에 보안 제한이 적용될 수 있습니까? –
은 isImage를 반환하면 안됩니다. 완전한 콜백의 일부입니까? – pixeline
@pixieline : 가능합니다. 그것은 단지 하나의 리턴 포인트를 갖는 것이었지만 스위치 (상태)가 "오류"이므로 분기가 호출되지 않기 때문에 멀리까지 도달하지 못합니다. –