Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过ajax post请求从网站检索结果_Javascript_Ajax_Post_Web Scraping_Http Headers - Fatal编程技术网

Javascript 通过ajax post请求从网站检索结果

Javascript 通过ajax post请求从网站检索结果,javascript,ajax,post,web-scraping,http-headers,Javascript,Ajax,Post,Web Scraping,Http Headers,我正在尝试执行一个简单的ajax post请求,以从网站检索一些数据。 详细地说,我正试图联系一个网页,一个网站召回有一些信息。 因此,我有一个主网站和一个页面,它调用检索数据。 我发现该页面使用google inspection部分,特别是inspector的网络字段的xhr部分。 在我的代码中,我使用了网站用于联系页面的所有标题和有效负载数据。 这是我用来实现目标的代码: var XMLHttpRequest = require("xmlhttprequest").XMLHttpRe

我正在尝试执行一个简单的ajax post请求,以从网站检索一些数据。 详细地说,我正试图联系一个网页,一个网站召回有一些信息。 因此,我有一个主网站和一个页面,它调用检索数据。 我发现该页面使用google inspection部分,特别是inspector的网络字段的xhr部分。 在我的代码中,我使用了网站用于联系页面的所有标题和有效负载数据。
这是我用来实现目标的代码:

    var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
    var url = 'https://www.remax.pt/Webservices/MainWebService.asmx/GetCityList';
var body = {"SiteRegionID":"12","RegionID":"12","RegionRowID":"78","ProvinceID":"0",
"LanguageCode":"ITA","MinInternetCount":"0","SearchType":"","OfficeAgent":"0",
"EncodingLanguage":"PTG","OfficeAgentId":"0"};

var xhr = new XMLHttpRequest();
xhr.onload = function () {
    var data = xhr.responseText;
    if (xhr.readyState == 4 && xhr.status == "200") {
        console.table("results: "+data);
    } else {
        console.error("error: "+data);
    }
}
    xhr.open("POST", url, true); 
    xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    //xhr.setRequestHeader("Content-Type","text/html");
    xhr.setRequestHeader("Access-Control-Allow-Origin","*");
    xhr.setRequestHeader("accept", "application/json, text/javascript, */*; q=0.01");
    xhr.setRequestHeader("authority", "www.remax.pt");
    xhr.setRequestHeader("scheme", "https");
    xhr.setRequestHeader("path", "/Webservices/MainWebService.asmx/GetCityList");
    xhr.setRequestHeader("accept-language","it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7");
    //xhr.setRequestHeader('accept-encoding', 'gzip, deflate, br');
    //xhr.setRequestHeader("host", "https://www.remax.pt");
    //xhr.setRequestHeader('referer', 'https://www.remax.pt/PublicListingList.aspx');
    //xhr.setRequestHeader('content-length', '192');    
    //xhr.setRequestHeader('cookie','__cfduid=dc7dd48ccff40ee4f85840bfc35685b311531384150; PersonalizationMap=; PersonalizationGallery=SelectedCountryID=12; GtTransLang=ITA; SLINGSHOT=LanguageCode=it-IT; SessionId=1ac0ec84-6a03-4965-ba90-7eb686f66bf5; ASP.NET_SessionId=rgia1pblms2abf11ypsbiqgz; GtTrans=ENU; LastSearch=SiteRegionID=12&TransactionTypeUID=260&RegionID=12&RegionRowID=78&LocationText=Porto&LocationValue=YR78&PriceCurrency=EUR&ComRes=2; PersonalizationRegion=#mode=list&tt=260&cr=2&r=78&cur=EUR&la=All&sb=PriceIncreasing&page=1&sc=12&sid=a81a1d1d-ee36-4236-a72e-31343349c574; PersonalizationDate=2018-7-24 10:0:30');
    xhr.setRequestHeader("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36");
    xhr.setRequestHeader("x-requested-with", "XMLHttpRequest");
    xhr.send(JSON.stringify(body);
事实上,我从来没有得到过答案。我认为操作流永远不会进入onLoad部分,因为if和else部分中的字符串永远不会被打印。 我想指定对某些标题进行注释,因为我有这种类型的答案: 拒绝设置不安全的标头“nameHeader” 所以我决定暂时不使用它们

我试图更改一些标题或添加一些新的内容,但问题仍然存在,老实说,我不知道这是否是某些字段的语法问题,或者是否需要其他东西来执行可接受的请求

为完整起见,我插入了我在inspector工具中找到的4个字段,这些字段指定了网站为调用页面而传递的参数:

概述

 1. Request URL:       
    https://www.remax.pt/Webservices/MainWebService.asmx/GetCityList
 2. Request Method: POST 
 3. Status Code: 200  
 4. Remote Address: 104.25.40.105:443
 5. Referrer Policy: no-referrer-when-downgrade
响应标题

  • 列表项
  • 缓存控制:专用,最大年龄=0
  • cf射线:43f532b9e9886260 LIS
  • 内容编码:br
  • 内容类型:application/json;字符集=utf-8
  • 日期:2018年7月24日星期二09:00:44 GMT
  • 预期ct:最大年龄=604800,报告uri=”https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
  • 服务器:cloudflare
  • 现状:200
  • x-aspnet-version:4.0.30319
  • x-ua-兼容:IE=9,IE=8
  • 请求标题

     1. Request URL:       
        https://www.remax.pt/Webservices/MainWebService.asmx/GetCityList
     2. Request Method: POST 
     3. Status Code: 200  
     4. Remote Address: 104.25.40.105:443
     5. Referrer Policy: no-referrer-when-downgrade
    
  • 授权:www.remax.pt
  • 方法:邮寄
  • 路径:/Webservices/MainWebService.asmx/GetCityList
  • 方案:https
  • 接受:application/json,text/javascript,/;q=0.01
  • 接受编码:gzip,deflate,br
  • 接受语言:它,它;q=0.9,在美国;q=0.8,en;q=0.7
  • 内容长度:192
  • 内容类型:application/json;字符集=UTF-8
  • cookie:uu cfduid=dc7dd48ccff40ee4f85840bfc35685b311531384150;个性化地图=;PersonalizationGallery=SelectedCountryID=12;GT=ITA;弹弓=语言代码=它;会话ID=1ac0ec84-6a03-4965-ba90-7eb686f66bf5;ASP.NET_SessionId=rgia1pblms2abf11ypsbiqgz;GtTrans=ENU;LastSearch=SiteRegionID=12&TransactionTypeUID=260&RegionID=12&RegionRowID=78&LocationText=Porto&LocationValue=YR78&PriceCurrency=EUR&ComRes=2;PersonalizationRegion=#mode=list&tt=260&cr=2&r=78&cur=EUR&la=All&sb=PriceIncreating&page=1&sc=12&sid=a81a1d1d-ee36-4236-a72e-31343349c574;个性化日期=2018-7-24 10:0:30
  • 来源:
  • 推荐人:
  • 用户代理:Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/67.0.3396.99 Safari/537.36
  • x-request-with:XMLHttpRequest
  • 请求有效负载
    {“SiteRegionID”:“12”,“RegionID”:“12”,“RegionRowID”:“78”,“ProvinceID”:“0”,“LanguageCode”:“ITA”,“MiniInternetCount”:“0”,“SearchType”:“OfficeAgent”:0,“EncodingLanguage”:“PTG”,“OfficeAgentId”:0}

    现在我在这一页找到了答案:。现在的问题是,我收到了内部服务器错误500的html。消息说:“您正在查找的资源有问题,无法显示”。好的,我解决了这个问题。对于那些想知道的人,我需要在请求中添加以下标题:“访问控制允许标题”,“内容类型”