当前位置: 首页 > news >正文

手机版网站制作应用塑钢模板价格一平方

手机版网站制作应用,塑钢模板价格一平方,大三亚app下载,h5网站建设报价多少钱1、请求未携带 Accept-Language http header 出现图片加载失败 现象: 访问 https://www.huawei.com/cn/?ic_mediumdirect&ic_sourcesurlent 时出现图片加载失败的问题 预期结果: 原因: 网络库删除了添加 Accept-Language header 的逻…

1、请求未携带 Accept-Language http header 出现图片加载失败

现象:
访问 https://www.huawei.com/cn/?ic_medium=direct&ic_source=surlent 时出现图片加载失败的问题
在这里插入图片描述
预期结果:
在这里插入图片描述

原因:
网络库删除了添加 Accept-Language header 的逻辑,华为商城站点的图片 server 发现请求未携带该 header 直接返回403。

解决方案:
补充对该 header 的添加逻辑,请求未携带该 header 时网络库自动根据手机设置的语言环境添加。

+ (NSString*)getAcceptLanguagesFromPreferredLanguages:(NSArray<NSString*>*)languages {NSMutableArray* acceptLanguages = [NSMutableArray new];for (NSString* lang_region in languages) {NSString* lang = [lang_region componentsSeparatedByString:@"-"][0];if ([lang_region rangeOfString:@"zh-Hans-CN"].location != NSNotFound) {lang = @"zh-CN";} else if ([lang_region rangeOfString:@"zh-Hant-"].location != NSNotFound) {// 台湾、香港、澳门、繁体统一用繁体lang = @"zh-TW";}NSString* localeAcceptLangs = acceptLangs[lang_region] ?: acceptLangs[lang];if (localeAcceptLangs)[acceptLanguagesaddObjectsFromArray:[localeAcceptLangscomponentsSeparatedByString:@","]];}NSString* acceptLanguageString =[[[NSOrderedSet orderedSetWithArray:acceptLanguages] array]componentsJoinedByString:@","];return [acceptLanguageString length] != 0 ? acceptLanguageString: @"en-US,en";
}+ (NSString*)getAcceptLanguages {return [selfgetAcceptLanguagesFromPreferredLanguages:[NSLocale preferredLanguages]];
}

2、server 下发多个 content-type 时出现页面乱码

正常情况下 server 下发的 content-type 只有一个,但少数不规范站点下发了多个且互斥的 value,而预期的可能是最后一个,而 在该情况下,cronet 一般只会取第一个 value 返回,因此可能出现页面乱码的问题:

// 不规范content-type示例,该 header 会引起下面的乱码页面
content-type: text/html; charset=utf-8, text/html; charset=gbk 

在这里插入图片描述
解决方案:
修改 ios/net/protocol_handler_util.mm 的 GetNSURLResponseForRequest 方法中处理 content-type 的部分,针对域名分策略处理,比如策略一,cronet 将 server 下发的所有 content-type 返回给上层;策略二,cronet 将最后一个 content-type 返回给上册,否则按默认处理(即只返回第一个)。
cronet 官方源码:https://source.chromium.org/chromium/chromium/src/+/main:ios/net/protocol_handler_util.mm;l=132
在这里插入图片描述

3、业务请求携带的 referer header 过长导致页面白屏问题

当请求携带的 referer 过长时(> 4KB),cronet 会移除该 header,如果server 端认为未携带 referer 的请求非法时会导致请求失败,从而出现浏览器页面白屏现象。

解决方案:
在 net/url_request/url_request.cc 的 URLRequest::StartJob 方法中处理 referer 的部分,增加域名白名单机制,域名白名单的域名在出现 referer 过长时,将 referer 改为仅保留 host 信息,而不是全部删除,例如:

过长 referer:https://source.chromium.org/chromium/chromium/src/+/main:net/url_request/url_request.cc(假设它超过 4KB)
处理后 referer:https://source.chromium.org

在这里插入图片描述

关于 http referer 长度限制原因:
在这里插入图片描述
主流浏览器对上述长度限制的支持情况:
在这里插入图片描述

4、server 与客户端压缩算法协商不一致出现访问错误

现象:
访问 www.berkshirehathaway.com 站点出现失败情况:
在这里插入图片描述
原因:
网络库在设置 accept-encoding 时未添加 br 压缩的支持,而 server 响应的内容为 br 压缩的,因此出现该错误页面。cronet 对应的内部错误码为 -330:

// Content decoding of the response body failed.
NET_ERROR(CONTENT_DECODING_FAILED, -330)

需要修改 net/http/http_network_transaction.cc 文件 HttpNetworkTransaction::ContentEncodingsValid 方法,如果 server 响应内容为br 压缩,而请求未支持 br 时,按 br 解压:

  ...// Temporary workaround for http://crbug.com/714514if (headers->IsRedirect(nullptr)) {return true;}/* 以下为修复代码 */if (!result && (content_encoding.find("br") != std::string::npos) &&(accept_encoding.find("br") == std::string::npos)) {result = true;}

在这里插入图片描述

http://www.yayakq.cn/news/814997/

相关文章:

  • 成都哪里有做网站的公司如何快速建设自适应网站
  • 排名好的昆明网站建设无锡工业设计公司
  • 苏省住房和城乡建设厅网站网站建设需要哪些职位
  • 物流网站开发公司安徽省住房与城乡建设厅网站
  • 珠海华中建设工程有限公司网站青海报社网站建设公司
  • 如何用Word做网站单页07073游戏网官网
  • 小金县建设局网站哪个网站做体检预约的
  • 沈阳正规制作网站公司哪家好提供网站建设报
  • 专题网站建设的请示南通网站建设机构
  • 玉田网站建设如何写一个可以做报价计算的网站
  • 电商网站可维护性产品网络营销策划
  • 深圳制作网站公司哪里好沙坪建设集团网站
  • 潍坊公司网站制作广州网站建设哪家便宜
  • 物流网站模板下载wordpress源代码解析
  • 未来做那些网站能致富上海网页设计
  • 个人备案的网站可以卖东西么网页设计图片变换特效
  • 网站建设 金疙瘩计划建网站需要那些工具
  • wordpress 博客 主题温州快速排名优化
  • 常州网站搭建找哪家二级目录网站怎么做
  • 网站建设专家怎么样wordpress 目录表插件
  • wordpress 建网站视频做网页的软件有什么
  • 如何做织梦论坛类的网站网站建设海之睿
  • 做游戏陪玩网站wordpress 主题生成
  • 网站建设模温州网站建设wmwl
  • 网站建设与管理教程视频教程小规模公司做网站成本是什么
  • 网站域名备案查询官网广东高端网站设计公司
  • 体育西网站开发方案公众号做微网站
  • 好用的网站开发框架会展行业门户网站建设
  • 做网站备案是什么意思网站上做百度广告赚钱么
  • 做门户网站经验高邮建设局网站