如果链接从flash打开,Linkedin.com将返回text / plain

时间:2015-03-04 11:57:12

标签: apache flash http-headers linkedin

我在一家制作网络出版软件的公司工作。昨天我偶然发现了从闪光灯打开链接的奇怪错误。该链接指向linkedin.com网站上的一个页面,但可能并非唯一的情况。

这是一个测试出版物: http://cdiem.cld.bz/Link-test (单击“产品指南”文本,指向linkedin.com上的页面链接)

出于某种原因,它在Chrome和Opera(以及其他基于Chromium的浏览器)中以纯文本形式打开,但在Firefox和IE中运行良好。 它也可以从HTML版本的发布中正常工作(禁用Flash插件来查看它)。如果您只是重新加载页面,它也可以正常工作。

我的猜测是它与X-Requested-With标头字段有关,因为我发现它与Flash和HTML版本的发布的HTTP请求之间的差异是唯一的:

X-Requested-With:ShockwaveFlash/16.0.0.305

有人可以就此提出任何建议吗?

1 个答案:

答案 0 :(得分:0)

我认为你对X-Requested-With是正确的。

使用hurl.it进行这两项测试,您可以在其中测试HTTP请求:

首先测试:只需要我们的页面。

请求标头:

Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: runscope/0.1

响应标头:

Cache-Control: no-cache, no-store
Connection: keep-alive
Content-Encoding: gzip
Content-Language: en-US
Content-Length: 6156
Content-Type: text/html;charset=utf-8
Date: Thu, 05 Mar 2015 21:10:50 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
...

在这里,我们可以清楚地看到服务器已发送text/html内容。


我们会进行相同的测试,但我们只会添加X-Requested-With标题。

第二次测试:使用X-Requested-With标题请求我们的网页。

请求标头:

Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: runscope/0.1
X-Requested-With: stackoverflow_test

响应标头:

Cache-Control: no-cache, no-store
Connection: keep-alive
Content-Encoding: gzip
Content-Language: en-US
Content-Length: 3602
Content-Type: text/plain;charset=UTF-8
Date: Thu, 05 Mar 2015 21:21:06 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
...

这次我们可以看到服务器发送了text/plain内容。

因此,当收到由Flash Player PPAPI(在Chrome和Opera中使用)发送的Content Type标头时,服务器正在将text/plain更改为X-Requested-With就像你可以看到here

希望可以提供帮助。