在magento 2 REST API调用期间400错误请求

时间:2017-09-20 06:22:49

标签: angularjs .htaccess api cors magento2

在angular中使用$ http.get时,我遇到了一个问题:Cross-Origin Request Blocked:同源策略禁止读取远程资源.....

$http({ 
  method: 'GET', 
  url: 'https://<magento_host>/rest/default/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=status&searchCriteria[filter_groups][0][filters][0][value]=processing,pending&searchCriteria[filter_groups][0][filters][0][condition_type]=in',
    headers : {
      'Authorization': 'Bearer xxxxxxxxxxxxxxx'
    }
   }).success(function (data) {

    }).error(function (data) {

    });

为了避免跨源问题,我在Apache服务器的.htaccess文件中设置了以下方法。

  1. 标题始终设置Access-Control-Allow-Origin&#34; *&#34;
  2. 标题始终设置Access-Control-Allow-Methods&#34; POST,GET,OPTIONS, PUT,DELETE&#34;
  3. 标题始终设置Access-Control-Allow-Headers:Authorization
  4. 在firefox开发人员工具中我得到了这样的

    1. 阻止跨源请求:同源策略不允许
      https:/// rest / default / V1 / orders?searchCriteria [filter_groups] [0] [filters] [0] [field] = status&amp; searchCriteria [filter_groups] [0] [filters]中读取远程资源[0] [值] =处理,待决安培; searchCriteria [filter_groups] [0] [过滤器] [0] [condition_type]在=。 (原因:CORS预检频道没有成功)。
    2. 当我尝试这个休息时,客户端调试工具正常工作

        

      注意:我们试图找到解决方案,但我们失败了。请帮忙......

1 个答案:

答案 0 :(得分:3)

我在下面的代码中使用以获得解决方案。

将选项请求更改为200 ok

RewriteCond %{REQUEST_METHOD} OPTIONS 
RewriteRule ^(.*)$ $1 [R=200,L]

<IfModule mod_headers.c>
    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Allow-Headers "Authorization"
</IfModule>

最后激活标题并重新启动apache

  

sudo a2enmod header

     

sudo service apache2 restart