【问题标题】:JSONP calls not working with apple-mobile-web-app-capable="yes"JSONP 调用不适用于 apple-mobile-web-app-capable="yes"
【发布时间】:2011-12-06 12:44:14
【问题描述】:
问题:
设置了<meta name="apple-mobile-web-app-capable" content="yes" />,我所有的 jsonp 请求都被拒绝了。我通过设置 content="yes" 了解到,您无法更改页面。但我不知道你不能请求外部资源。此应用必须全屏显示。有没有办法在 html5 应用上使用这个标签将 iPad 设置为全屏模式?
现在我的请求只是被发送到另一个子域并且它们都被拒绝了?任何人都知道如何解决这个问题?允许 jsonp 并强制全屏模式?
【问题讨论】:
标签:
jquery
ipad
html
webkit
iphone-standalone-web-app
【解决方案1】:
所以解决这个问题很棘手。
使用 JSONP,您无需担心 跨域 问题。但是,当您设置 <meta name="apple-mobile-web-app-capable" content="yes" /> 时,您将不能够发送跨域请求,而无需在标头中指定 Access-Control-Allow-Origin。
所以这里是解决方案:
注意:在这两个请求中,我都指定了 &jsoncallback=?
不起作用:
function jsonpRequest(req){
$.getJSON(req,
function(data) {
// JSONP will run getJson() above;
});
}
有效:
function jsonpRequest(req){
$.ajax({
url: req,
dataType: 'json',
beforeSend: setHeader,
//data: data
//success: callback
});
/*
$.getJSON(req,
function(data) {
// JSONP will run getJson() above;
});*/
}
function setHeader(xhr) {
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
}