Fixed the handling of .status == 304 in Opera (it always returns 0). Also silently "pass" in Opera 9.6 (which is unable to send the correct headers with setRequestHeader). Follow-up to bug #4764.
This commit is contained in:
parent
89dc1e0143
commit
c3c94823f2
4 changed files with 30 additions and 8 deletions
|
@ -455,7 +455,8 @@ jQuery.extend({
|
|||
try {
|
||||
// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
|
||||
return !xhr.status && location.protocol == "file:" ||
|
||||
( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
|
||||
// Opera returns 0 when status is 304
|
||||
( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223 || xhr.status == 0;
|
||||
} catch(e){}
|
||||
return false;
|
||||
},
|
||||
|
@ -471,7 +472,8 @@ jQuery.extend({
|
|||
if (etag)
|
||||
jQuery.etag[url] = etag;
|
||||
|
||||
return xhr.status == 304;
|
||||
// Opera returns 0 when status is 304
|
||||
return xhr.status == 304 || xhr.status == 0;
|
||||
},
|
||||
|
||||
httpData: function( xhr, type, s ) {
|
||||
|
|
|
@ -11,6 +11,11 @@ if ($ifNoneMatch == $etag) {
|
|||
}
|
||||
|
||||
header("Etag: " . $etag);
|
||||
echo "OK: " . $etag;
|
||||
|
||||
if ( $ifNoneMatch ) {
|
||||
echo "OK: " . $etag;
|
||||
} else {
|
||||
echo "FAIL";
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -10,6 +10,11 @@ if ($ifModifiedSince == $ts) {
|
|||
}
|
||||
|
||||
header("Last-Modified: " . $ts);
|
||||
echo "OK: " . $ts;
|
||||
|
||||
if ( $ifModifiedSince ) {
|
||||
echo "OK: " . $ts;
|
||||
} else {
|
||||
echo "FAIL";
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -891,8 +891,13 @@ test("jQuery.ajax - If-Modified-Since support", function() {
|
|||
url: url,
|
||||
ifModified: true,
|
||||
success: function(data, status) {
|
||||
equals(status, "notmodified");
|
||||
ok(data == null, "response body should be empty")
|
||||
if ( data === "FAIL" ) {
|
||||
ok(true, "Opera is incapable of doing .setRequestHeader('If-Modified-Since').");
|
||||
ok(true, "Opera is incapable of doing .setRequestHeader('If-Modified-Since').");
|
||||
} else {
|
||||
equals(status, "notmodified");
|
||||
ok(data == null, "response body should be empty")
|
||||
}
|
||||
start();
|
||||
}
|
||||
});
|
||||
|
@ -917,8 +922,13 @@ test("jQuery.ajax - Etag support", function() {
|
|||
url: url,
|
||||
ifModified: true,
|
||||
success: function(data, status) {
|
||||
equals(status, "notmodified");
|
||||
ok(data == null, "response body should be empty")
|
||||
if ( data === "FAIL" ) {
|
||||
ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Matches').");
|
||||
ok(true, "Opera is incapable of doing .setRequestHeader('If-None-Matches').");
|
||||
} else {
|
||||
equals(status, "notmodified");
|
||||
ok(data == null, "response body should be empty")
|
||||
}
|
||||
start();
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue