Jquery 没有JSONP的JSON跨站点

Jquery 没有JSONP的JSON跨站点,jquery,json,jsonp,Jquery,Json,Jsonp,我有一个本地硬件,我通过它的IP地址访问它来检索json数据 我正在创建一个基于web的应用程序,但由于跨域问题,当应用程序在web上运行时,它无法访问本地json数据 是否有合适的解决方案使JSON数据可用于web应用程序 我使用jQuery在本地读取JSON文件 硬件目前不提供JSONP 提前感谢。您可以在本地站点上用PHP/ASP/等页面代理它,该页面(在后端)将查询远程信息。这将允许您调用somesite.com/getForeignData(实际上调用othersite.com/for

我有一个本地硬件,我通过它的IP地址访问它来检索json数据

我正在创建一个基于web的应用程序,但由于跨域问题,当应用程序在web上运行时,它无法访问本地json数据

是否有合适的解决方案使JSON数据可用于web应用程序

我使用jQuery在本地读取JSON文件

硬件目前不提供JSONP


提前感谢。

您可以在本地站点上用PHP/ASP/等页面代理它,该页面(在后端)将查询远程信息。这将允许您调用somesite.com/getForeignData(实际上调用othersite.com/foreignData)并在同一域中返回它


除此之外,您还需要使用JSONP(这是一个专门设置的边界)。“最后一个”选项是在您的浏览器上启用跨境调用,但如果您希望其他人具有相同的功能,这只是一个临时解决方案。

您可以将标头添加到HTTP响应中吗?如果是,请添加以下内容

Access Control Allow Origin
值为
*


然后您的浏览器将允许对该资源的请求

您可以创建本地代理

例如,如果您的web应用程序在www.example.com上运行,则制作一个小型服务器端组件,该组件在www.example.com/hardware上响应

然后,在调用此URL时,服务器端组件对硬件执行直接查询,并将其返回给调用webapp

注意事项:

  • 如果响应较大或硬件速度较慢,则代理可能需要大量缓冲。如果你想制定一个可扩展的解决方案,你必须小心
  • 您可以在代理上缓存数据,以减少硬件上的负载
  • 您可以在将数据发送到代理中的web应用程序之前对其进行按摩。例如,将JSON更改为XML,反之亦然。甚至将其预格式化为HTML

正如Brad所提到的,使用代理是一条可行之路。以下是有关代理的更多信息:

如果您可以访问php服务器,我可以通过以下方式推荐代理。您将需要以下内容:


如果您的url看起来像这样 这很方便

1) 导入flXHR的库
2) 只需创建一个flXHR的实例
3) 然后将其分配给jqueryajax选项

$.ajaxSetup({
   "xhr": myflXHRInstance
});
(更多信息请访问)
4) 将crossdomain.xml放在ip的根目录中,即。

5) 通过jQuery享受您的跨域请求)

p.S.要求安装flash插件。几乎没有浏览器没有安装Flash player插件

编辑:为crossdomain.xml的俄文链接感到抱歉。

如果您这样做,请不要尝试将“允许从域访问”(“*”)设置为“允许”,因为这样会使您的站点为任何站点打开,以阅读您的内容。问题是您必须将crossdomain.xml放在硬件设备上,这可能是不可能的