mirror of
https://github.com/jquery/jquery.git
synced 2026-02-01 09:44:56 -05:00
Ajax: improve content-type detection
Fixes gh-2584 Closes gh-2643
This commit is contained in:
5
test/data/ajax/content-type.php
Normal file
5
test/data/ajax/content-type.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
$type = $_REQUEST['content-type'];
|
||||
header("Content-type: $type");
|
||||
echo $_REQUEST['response']
|
||||
?>
|
||||
@@ -1794,7 +1794,109 @@ QUnit.module( "ajax", {
|
||||
}
|
||||
);
|
||||
|
||||
// //----------- jQuery.ajaxPrefilter()
|
||||
ajaxTest( "gh-2587 - when content-type not xml, but looks like one", 1, function( assert ) {
|
||||
return {
|
||||
url: url( "data/ajax/content-type.php" ),
|
||||
data: {
|
||||
"content-type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
"response": "<test/>"
|
||||
},
|
||||
success: function( result ) {
|
||||
assert.strictEqual(
|
||||
typeof result,
|
||||
"string",
|
||||
"Should handle it as a string, not xml"
|
||||
);
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
ajaxTest( "gh-2587 - when content-type not xml, but looks like one", 1, function( assert ) {
|
||||
return {
|
||||
url: url( "data/ajax/content-type.php" ),
|
||||
data: {
|
||||
"content-type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
"response": "<test/>"
|
||||
},
|
||||
success: function( result ) {
|
||||
assert.strictEqual(
|
||||
typeof result,
|
||||
"string",
|
||||
"Should handle it as a string, not xml"
|
||||
);
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
ajaxTest( "gh-2587 - when content-type not json, but looks like one", 1, function( assert ) {
|
||||
return {
|
||||
url: url( "data/ajax/content-type.php" ),
|
||||
data: {
|
||||
"content-type": "test/jsontest",
|
||||
"response": JSON.stringify({test: "test"})
|
||||
},
|
||||
success: function( result ) {
|
||||
assert.strictEqual(
|
||||
typeof result,
|
||||
"string",
|
||||
"Should handle it as a string, not json"
|
||||
);
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
ajaxTest( "gh-2587 - when content-type not html, but looks like one", 1, function( assert ) {
|
||||
return {
|
||||
url: url( "data/ajax/content-type.php" ),
|
||||
data: {
|
||||
"content-type": "test/htmltest",
|
||||
"response": "<p>test</p>"
|
||||
},
|
||||
success: function( result ) {
|
||||
assert.strictEqual(
|
||||
typeof result,
|
||||
"string",
|
||||
"Should handle it as a string, not html"
|
||||
);
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
ajaxTest( "gh-2587 - when content-type not javascript, but looks like one", 1, function( assert ) {
|
||||
return {
|
||||
url: url( "data/ajax/content-type.php" ),
|
||||
data: {
|
||||
"content-type": "test/testjavascript",
|
||||
"response": "alert(1)"
|
||||
},
|
||||
success: function( result ) {
|
||||
assert.strictEqual(
|
||||
typeof result,
|
||||
"string",
|
||||
"Should handle it as a string, not javascript"
|
||||
);
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
ajaxTest( "gh-2587 - when content-type not ecmascript, but looks like one", 1, function( assert ) {
|
||||
return {
|
||||
url: url( "data/ajax/content-type.php" ),
|
||||
data: {
|
||||
"content-type": "test/testjavascript",
|
||||
"response": "alert(1)"
|
||||
},
|
||||
success: function( result ) {
|
||||
assert.strictEqual(
|
||||
typeof result,
|
||||
"string",
|
||||
"Should handle it as a string, not ecmascript"
|
||||
);
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
//----------- jQuery.ajaxPrefilter()
|
||||
|
||||
ajaxTest( "jQuery.ajaxPrefilter() - abort", 1, function( assert ) {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user