2

项目和问题描述

项目简介

目前,我正在开发一个网络应用程序,该应用程序允许 Zillow API 订阅者向我网站上的 Zillow API 发出请求,并能够以 csv 格式下载属性数据。我的 Web 应用程序要求用户独立注册 Zillow 以接收他们的 API 密钥 (ZWSID),这是每次 API 调用都需要的,并且 Zillow 将订阅者限制为每天 1,000 个请求。因此,我的 Web 应用程序代表用户发出 API 请求并格式化数据以供用户下载(这不违反 Zillow API 条款和条件)。

问题

我面临的问题是,对 Zillow API 的每个请求很可能都包含我的 URL 作为请求的来源(可能还有用户代理或 HTTP 主机)。我担心这会被标记,并且 Zillow 会阻止来自我网站的所有请求,即使它们是代表我的用户提出的。有没有办法将 API 请求与使用我的网站的人相关联并删除我的网站作为来源?换句话说,有什么方法可以阻止我的网站包含在请求的标头中?请参阅下面的详细资料。

API 请求和 Zillow API 背景

我的项目技术

因为 API 请求是代表用户发出的,所以对 Zillow API 的请求是在前端完成的(使用 Ajax)。为了克服使用 Ajax 时的跨源请求错误,我必须导入“./jquery-cross.js”文件。

我必须向 Zillow API 发出请求的函数如下:

import $ from 'jquery'
import './jquery-cross.js'

const getReqWithSuccess = function(street, city, state) {
  return $.ajax({
    crossOrigin: true,
    url: `http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=X1-ZWz18mqy7m1ibv_ahuyo&address=${street}&citystatezip=${city}%2C+${state}&rentzestimate=true`,
    dataType: 'xml',
    method: 'GET'
  });
};

jquery-cross.js:

import jQuery from 'jquery'
var proxyJsonp = "https://script.google.com/macros/s/AKfycbwmqG55tt2d2FcT_WQ3WjCSKmtyFpkOcdprSITn45-4UgVJnzp9/exec";
jQuery.ajaxOrig = jQuery.ajax;
jQuery.ajax = function(a, b) {
function d(a) {
  a = encodeURI(a).replace(/&/g, "%26");
  return proxyJsonp + "?url=" + a + "&callback=?"
}
var c = "object" === typeof a ? a : b || {};
c.url = c.url || ("string" === typeof a ? a : "");
var c = jQuery.ajaxSetup({}, c),
e = function(a, c) {
  var b = document.createElement("a");
  b.href = a;
  return c.crossOrigin && "http" == a.substr(0, 4).toLowerCase() && "localhost" != b.hostname && "127.0.0.1" != b.hostname && b.hostname != window.location.hostname
}(c.url, c);
c.proxy && 0 < c.proxy.length && (proxyJsonp = c.proxy, "object" === typeof a ?
a.crossDomain = !0 : "object" === typeof b && (b.crossDomain = !0));
e && ("object" === typeof a ? a.url && (a.url = d(a.url), a.charset && (a.url += "&charset=" + a.charset), a.dataType = "json") : "string" === typeof a && "object" === typeof b && (a = d(a), b.charset && (a += "&charset=" + b.charset), b.dataType = "json"));
return jQuery.ajaxOrig.apply(this, arguments)
};
jQuery.ajax.prototype = new jQuery.ajaxOrig;
jQuery.ajax.prototype.constructor = jQuery.ajax;

Zillow API 信息

API 调用

我对 PHP 的了解有限,但请求似乎遵循这种格式。API 调用示例(在 zillow api 网站上)如下(其中 ZWSID 是 Zillow 订阅者密钥):

http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=<ZWSID>&address=2114+Bigelow+Ave&citystatezip=Seattle%2C+WA

API 响应

输出以 XML 格式返回:

 <SearchResults:searchresults xsi:schemaLocation="http://www.zillow.com/static/xsd/SearchResults.xsd /vstatic/ae1bf8a790b67ef2e902d2bc04046f02/static/xsd/SearchResults.xsd">
    ...
</SearchResults:searchresults>

我愿意接受任何想法或解决方法来删除与 API 请求相关联的网站。谢谢你的帮助。

4

0 回答 0