我正在尝试使用webservice prestashop(1.6)通过使用jquery函数getJSON()获得我的产品,但是在控制台的浏览器上,出现以下错误:
XMLHttpRequest cannot load
http://www.pourquoilavie.org/api/products/?ws_key=XXXXXkeyXXXXXXXXX&io_format=JSON.
No 'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://localhost' is therefore not allowed access.
我试图向htaccess添加“ Header set Access-Control-Allow-Origin:*”,但没有成功。
我想知道是否还有另一种设置标头的方法(除非将php与header('Access-Control-Allow-Origin: *');
一起使用)
./prestafolder/webservice/dispatcher.php
出于安全原因,您可以输入域名而不是星号
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Origin: http://example.com');
FYI如果仍然有问题或
Unauthorized
消息,请尝试从以下位置更改您的网址
http://[email protected]/api/
进入
http://example.com/api/?ws_key=KEYTOKEN
header('Access-Control-Allow-Origin: *');
我添加在dispatcher.php标头中
//to access from external browser
header('Access-Control-Allow-Origin: *');
header( 'Access-Control-Allow-Headers: Authorization, Access-Control-Allow-Headers,
Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-
Control-Request-Headers,Output-Format');
header( 'Access-Control-Allow-Methods: GET, OPTIONS, HEAD, PUT, DELETE');
header( 'Access-Control-Allow-Credentials: true');
然后在代码后进行如下修改
if ($method === 'OPTIONS') { die('200'); ob_end_flush(); }else{ if (isset($_SERVER['PHP_AUTH_USER'])) { .... }