当我用浏览器调用 XMLHttpRequest 时,它显示的结果每次都不同,并且似乎没有完全接收数据。为此,我使用 Phantomjs 来调用此请求,但我无法完全响应请求,因为我使用下面的代码,但它不起作用,就像浏览器调用一样,如果请求每次都有不同的结果。
var page = require('webpage').create();
page.settings.resourceTimeout = 5000;
page.open("http://www.tsetmc.com/tsev2/data/instinfodata.aspx?i=9536587154100457&c=57+", function() {
var ans=page.content;
ans=ans.split(",");
allnemads.push(ans);
page.close();
});
我怎样才能完全满足这个请求? 编辑: 根据请求的一些 header 是:
Accept:text/plain, */*; q=0.01
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,fa;q=0.6
Connection:keep-alive
Cookie:__qca=P0-1512129452-1383575171205; ASP.NET_SessionId=0bzykf45ydyr2ovzfou0pd55
If-Modified-Since:Wed, 14 May 2014 07:11:02 GMT
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
X-Requested-With:XMLHttpRequest
如何设置这个参数?
最佳答案
服务可能会查找发出请求的客户端的合法性。要解决这个问题,请转储您获得的数据,而不对其中存在“,”进行任何假设,然后看看它说了什么。更好的是,使用 page.render()
渲染页面进行调试。
根据您所看到的内容,您可能需要更改 User-Agent
、X-Request-With
、referrer
等请求中的其他 header 字段。您可以通过在 Chrome 检查器的网络选项卡中查看它来将其与从浏览器发送的请求进行匹配。
关于javascript - 如何完整接收外部网页的XMLHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23619554/