【发布时间】:2014-05-25 11:18:54
【问题描述】:
场景:
- WebView (Android 4.x) 通过 http(不是 file://)加载页面
- 页面包含对另一个域上的资源的 xhr 请求(本机或 jQuery,相同的结果)
- 资源通过 307(或任何其他 30x,相同结果)重定向到另一个资源(某些域或不同域,相同结果)
- 我收到了臭名昭著的“错误”以及任何其他信息
注意:
- 如果不是重定向,则请求已满
- 如果所有资源都在同一台服务器上,则请求已满
- 为重定向的资源和最后一个资源设置了 CORS 标头
- 在 Chrome 或 Firefox 上一切正常
- 我可以控制一切(Android 应用、服务器和网页)
- “手动”重定向有效,如果我单击 A 元素,WebView 将跟随 307
- 最终 URL 没有被 WebView 命中,这(显然)意味着它在第一个响应中检测到错误
- 我不使用 BASE 元素
JS代码基本就是这个
var url = "http://xxxxxx/zot";
var oReq = new XMLHttpRequest();
oReq.onerror = function() {
// I received the error
};
oReq.onload = function(e) {
// Not reached
};
oReq.open("GET", url, true);
oReq.send();
第一个请求吐出的标头:
HTTP/1.1 307 Temporary Redirect
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: connection,host,accept-language,accept-encoding,accept-charset,user-agent,origin,cache-control,pragma,referer,origin,X-Requested-With,x-requested-with,accept-charset,x-wap-profile,x-getzip, Access-Control-Allow-Origin,X-HTTP-Method-Override,Content-Type,Authorization,Accept
Access-Control-Allow-Methods: GET, POST, OPTIONS
Location: http://10.90.7.10:3030/r/vast
Date: Fri, 11 Apr 2014 09:40:01 GMT
Connection: keep-alive
(尝试删除所有这些,部分删除,等等)
【问题讨论】:
标签: javascript android webview xmlhttprequest cors