我的 restler 3 api 在本地测试服务器上运行良好,如果从同一台服务器调用,则在生产服务器上运行良好,但如果我远程进行调用,那么它会失败。
将相同的 rest 客户端与 luracast 在线示例一起使用,它可以在远程调用中正常工作,因此必须是我的配置中的某些内容(我的 api 或我的生产服务器)。
我发现提到需要发送标头,因此尝试将这些标头添加到 index.php 文件中:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, PATCH, DELETE');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: *');
但这没有帮助。在 Firefox 中使用 RESTClient 插件,我可以看到这些标头已发送,无论我是否使用这些标头命令,浏览器都会在本地和远程显示数据。
这是一个示例调用: https ://api.masterpiecesolutions.org/v1/artists/?key=A4oxMOYEUSF9lwyeFuleug==
我的那个调用的 index.php 使用这个,第二个参数映射到根级别
$r->addAPIClass('Artists', '');
不知道这是否相关。
另外,生产服务器是 Amazon EC2,所以可能与安全策略有关?
或者,也许是其他一些标题问题?在 google chrome 中,使用 Advanced Rest Client 扩展,它给出了状态403 Forbidden
和Content-Type
是text/plain
(无论是使用本地服务器还是远程服务器),所以它根本不起作用,不像 firefox 插件。
我还看到了$_SERVER['HTTP_ORIGIN']
在 Restler.php 中的使用,这似乎不是到处都支持吗?