我正在研究类似桥接的解决方案,以便从HbbTV应用程序与一些飞利浦Hue灯(正确使用网关硬件)进行通信。
随着流程向前发展并且系统正在运行,我现在正在使用Firefox插件来模拟带有HbbTV的电视。为此,我通过XAMPP启动了一个apache,在此我将我的文件加载到Firefox中。
由于我这样做了,我无法向飞利浦网关发送任何POST请求,因为相同的原始政策是正确的。我无法访问飞利浦Hue的设置,因此我的工作范围必须仅来自客户端。
我的实际尝试看起来像这样:
var stringState = "http://" + this.Ip + "/api/" + this.UserId + "/lights/" + this.LightId;
var httpxml = new XMLHttpRequest();
var valueRequest;
console.log("in GetState:" + this.LightId);
httpxml.onreadystatechange = function() {
if (httpxml.readyState == XMLHttpRequest.DONE) {
valueRequest = JSON.parse(httpxml.responseText);
console.log(valueRequest);
console.log(valueRequest.state.on);
that.switchState(valueRequest.state.on);
}
}
httpxml.open('GET',stringState,true);
httpxml.withCredentials = true;
httpxml.setRequestHeader("Content-Type", "application/json");
httpxml.send();

我在JavaScript和Web开发方面很陌生。我希望有人可以带领我走上正确的道路,提出一些建议,也许是一个明确的例子。
祝你好运 阿德里安
答案 0 :(得分:0)
XAMPP中的一个P-s用于PHP。因此,您可以执行的解决方法是在HTML旁边托管一个PHP页面(并且CORS不会出现任何问题),并让它完成这项工作。
像
这样的东西<?php
$ip=$_REQUEST['ip'];
$user=$_REQUEST['user'];
$light=$_REQUEST['light'];
$ch=curl_init("http://".$ip."/api/".$user."/lights/".$light);
curl_exec($ch);
curl_close($ch);
这远非安全和美好,但可能有助于开始。一些简单的线索:变量以$
开头,.
是字符串连接的运算符。 $_REQUEST
是一个数组,它获取url参数,你应该在修改后的请求中提供什么(其中xy.php
是PHP页面的文件名):
var stringState = "xy.php?ip=" + this.Ip + "&user=" + this.UserId + "&light=" + this.LightId;
curl
是一个用于发出Web请求的实用程序(您可以在XAMPP文件夹xampp\apache\curl.exe
中找到它),并且它具有PHP绑定。 https://curl.haxx.se/。默认情况下,它返回控制器提供的任何内容,因此JSON应该传递。内容类型可能是也可能不是问题,如果它不起作用,您可以尝试在header("Content-Type: application/json");
行之前放置curl_exec
。