请求标头字段不允许授权

问题描述:

我的服务器上有一个基于Laravel的API。我尝试从AngularJS前端访问这个api。不幸的是这个错误出现了。请求标头字段不允许授权

我必须添加配置以允许授权标头? 我试图找到一个解决方案,但无法解决它。

我试图将其插入到httpd.conf,并在角前端的.htaccess但遗憾的是它没有工作:

Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response. 
+0

我在AWS上使用亚马逊机器映像。我试图将Headers添加到httpd.conf中。但它仍然不起作用。是否有可能需要将某些内容添加到访问api的JavaScript文件中? – Yann1ck

将下面的代码片段顶部在你的PHP脚本:

header('Access-Control-Allow-Origin:*');

header('Access-Control-Allow-Methods:GET,POST');

header(“Access-Control-Allow-Headers:X-Requested-With”);

+0

不幸的是,这不适合我。 我必须在httpd.conf中的服务器配置上更改任何内容吗? – Yann1ck

+0

@ Yann1ck你有没有在PHP文件中试过这段代码? –

+0

我正在使用laravel。所以我把它放在index.php中。这是正确的还是我有它放置在其他地方? – Yann1ck

快速解答

如果您的服务器使用Apache,下面的片段添加到您的API各自的的.htaccess文件:

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

更多细节

在上面的代码片段,我们要求Apache允许Authorization标头:

Header set Access-Control-Allow-Headers "Authorization" 

您可以在同一行添加多个headers,但请记住,建议只允许您的应用所需的标头

Header set Access-Control-Allow-Headers "Authorization, X-Requested-With" 

旁注

在一个相关的说明,人们常常需要允许跨域请求(也被称为跨来源资源共享或CORS)。下面的代码片段允许从https://example.com原点十字请求:

Header set Access-Control-Allow-Origin "https://example.com" 

,或者您可以使用"*"允许来自所有来源的请求: 不推荐

Header set Access-Control-Allow-Origin "*" 

结束语

<IfModule mod_headers.c> 
    # To allow headers 
    Header set Access-Control-Allow-Headers "Authorization" 

    # to allow cross origin request from https://example.com 
    Header set Access-Control-Allow-Origin "https://example.com" 
</IfModule> 
+0

不错,这正是我需要的 – Matohawk