操作由更新 img.src 引起的 http 请求
Manipulating http request caused by updating img.src
我目前正在为iOS和Android创建一个混合移动应用程序(参见phonegap/cordova),并在更新图像的img.src网址时注意到(我经常这样做)Android http请求如下所示。
我的问题是它不包括所有重要的接受标头(接受:/),因此服务器无法加载图像并返回(HTTP/1.1 406不可接受)。Chrome/iOS 在更新 img.src 网址时,在其 http 请求中包含此 Accept 标头。
我的问题是,有没有办法附加此标头或执行包含此标头以进行后续 img.src 更新的操作?
安卓 http 请求:
GET /system/data/ba9320b8-e093-47a9-8858-c6343febf3ec/frame?t=1339017043002 HTTP/1.1
Host: MyHostName
Connection: keep-alive
User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F)
AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Accept-Encoding: gzip,deflate
Accept-Language: en-US
Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7
Cookie: auth_token=0882f24f-04d7-4f05-9475-cfe2a94af5bf
看看谷歌的实现,以处理所有此类问题的兼容性问题。这是从闭包库内部,它与PhoneGap兼容(至少他们这么说:)
基本上你需要做的是改变http请求的标头。本机 xhr 对象有一个名为 setRequestHeader(param, value) 的方法;它能满足您的需求。在 Android 上使用远程调试来查看发送了哪些标头以及发送到何处。
我不知道你在用什么库。Google闭包库允许您将请求标头作为对象参数传递给xhr实例的发送方法(请参阅此),因此非常简单。据我所知,jQuery也有类似的行为。
$.ajax({
url: "http://someurl",
data: { signature: authHeader },
type: "GET",
beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');}
success: function() { alert('Success!' + authHeader); }
});
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- 使用插件收听Firefox标签的http请求
- http请求使用html而不是json进行响应
- 在node-js路由中发出http请求
- 是否可以在没有HTTP请求或<输入>
- Acync JS HTTP请求通知请求
- PhantomJs在控制台中发出http请求时不会返回任何状态
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- Firefox插件-如何发出http请求
- 验收测试主要针对传出的http请求
- 验证HTTP请求来自NFC标签上的点击
- 如何制作'http请求'在Node js中同步
- 为什么我在Cloud9中的http请求总是返回错误
- AngularJS Typeahead和$http请求限制
- HTTP请求使用cURL,但在浏览器中使用javascript时会得到CORS响应
- 如何使用Chrome扩展API获取网页的所有HTTP请求
- 将http请求中的数据传递给C#控制器
- 在初始化路由之前发送$http请求
- 从客户端捕获 HTTP 请求(包括 ajax)