当用户点击链接时,我需要向不同域上的页面发出请求,以使会话在该域上保持活动状态。我不关心响应数据(除了可能状态代码,所以我可以确保页面没有下降)。我尝试通过$.ajax
发出请求,但同源政策禁止它。
提出请求的最佳方式是什么?
我应该在页面上写一个iframe吗?脚本标签? $.ajax
中是否有可以使其有效的选项?
编辑:我还需要知道请求何时通过,以便我之后可以做一些事情(即,我想要一个回调)。
添加dataType: 'jsonp'
种类使它工作,除了我不希望它执行网站返回的任何内容,它似乎做了。我正在请求的页面是一个普通的旧HTML页面,但是它会在服务器上触发一些使会话保持活动的东西。
答案 0 :(得分:1)
您可以使用Image“class”发送请求:
var img = new Image();
img.onerror = img.onload = function() { console.log('Sended') }
img.src = "http://google.com?hey=google&rnd=" + Math.random() // random is used to prevent caching
但除非响应不是图片,否则您将无法获得有关资源可用性的任何信息。
另外,我不确定这个解决方案是否是跨浏览器的。它似乎适用于最近的Opera和Chrome,但我没有在任何其他浏览器中测试它。
顺便说一下,这种图像方法似乎是唯一安全的方法。如果你包含脚本或加载iframe,他们可能会对你的页面做一些不好的事情,而简单的图像则无害。答案 1 :(得分:0)
这似乎有效:
$('#myelement').on('click',function() {
$('<iframe>', {src:'http://otherdomain.com/page'}).hide().load(function() {
$(this).remove(); //clean up the DOM
// do stuff
}).appendTo('body');
});