Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 使用Angular连接到外部API_Javascript_Php_Angularjs_Ajax - Fatal编程技术网

Javascript 使用Angular连接到外部API

Javascript 使用Angular连接到外部API,javascript,php,angularjs,ajax,Javascript,Php,Angularjs,Ajax,我正在尝试连接Expedia Api。这样他们就有了api密钥和id 我使用jsonp处理这个问题,但是有一个bug导致了问题。另一件事是我的api密钥在javascript中公开 所以现在我必须找到另一种方法。我现在正在请求json,但当然我不能用它跨域,所以我找到了一个php代理。我的应用程序现在依赖于php(不过这还可以)。当我访问php代理时,现在会出现身份验证错误。我在不同的站点上尝试了不同的端点,脚本可以正常工作 因此,我无法访问此API 关于如何制作api跨站点、php代理或身份验

我正在尝试连接Expedia Api。这样他们就有了api密钥和id

我使用jsonp处理这个问题,但是有一个bug导致了问题。另一件事是我的api密钥在javascript中公开

所以现在我必须找到另一种方法。我现在正在请求json,但当然我不能用它跨域,所以我找到了一个php代理。我的应用程序现在依赖于php(不过这还可以)。当我访问php代理时,现在会出现身份验证错误。我在不同的站点上尝试了不同的端点,脚本可以正常工作

因此,我无法访问此API

关于如何制作api跨站点、php代理或身份验证的信息、教程和脚本似乎很少。我想现在有很多网站都依赖这种技术,这可能是有原因的

如何制作php代理并将这些数据返回给angular?
如何安全地隐藏api密钥?

将所有api密钥等保存在服务器上的PHP文件中。在该PHP文件中,您需要卷曲到API。然后让您的PHP脚本返回一个json_encode(),不管它们的API返回什么。这样就没有人会看到你的API了。

Ok,这很有意义。。我如何通过将其返回到Angular来完成往返过程?$http.post('/url/to/your/script.php',data)。然后(函数(s,r){console.log(r.data);});r、 数据将包含来自php脚本的响应(它将呼应来自API的响应),非常感谢您现在得到了这一点。但是我的php响应现在是空的,或者它包含html。现在如何从php文件返回json对象?它作为变量$response=json_decode(curl_exec($ch))输出$响应=curl_exec($ch);回音$应答;