如果使用POST
(或location.href
)作为数据,是什么导致window.location.href
类型无法获得预期的结果?
此代码不起作用(不返回任何内容):
$.ajax({
type: "POST",
url: 'page.asp',
data: {'q': location.href},
success: function(short_link,status){
console.log('short_link = '+short_link);
console.log('status = '+status);
}
});
我确实看到q值是在浏览器的网络信息中发送的,但是由于302对象已移动状态代码,以某种方式看起来POST重定向到GET了。就像那里所说的:Returning redirect as response to XHR request
但是,如果我将其更改为data: {'q': 'to some string'}
,则可以使用。
此外,如果我更改代码以使用GET
(并相应地使用'page.asp'
中的代码,它也可以工作:
$.ajax({
type: "GET",
url: 'page.asp?q='+location.href,
success: function(short_link,status){
console.log('short_link = '+short_link);
console.log('status = '+status);
}
});
我认为您必须对url进行编码,以替换特殊字符。
我看错地方了。
page.asp
检查了导致错误的SQL注入功能。