我的restler 3 api可以在本地測試服務器上正常工作,並且可以在生產服務器上正常工作,如果來自同一服務器的調用,但是如果我遠程調用則失敗。restler 3跨域不起作用
使用與luracast網上的例子同樣的REST客戶端正常工作與遠程調用,這樣一定是東西在我的配置(無論是我的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', '');
不知道這是否是相關的。
此外,生產服務器是亞馬遜EC2,所以可能與安全策略有關?
或者,也許這是一些其他的頭問題?在谷歌瀏覽器中,使用高級Rest Rest Client擴展,它給出的狀態爲403 Forbidden
和Content-Type
是text/plain
(無論是使用本地還是遠程服務器),因此根本不起作用,與firefox插件不同。
我也看到使用的Restler.php $_SERVER['HTTP_ORIGIN']
,這似乎並沒有到處被支持?
僅供參考:如果您在內部使用curl,則根本不需要CORS支持。只有在瀏覽器跨域請求中才需要CORS – Luracast 2013-03-14 13:37:11