加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angularjs:当凭据标志为真时,通配符’*’不能用于“Access-Cont

发布时间:2020-12-17 07:36:34 所属栏目:安全 来源:网络整理
导读:我知道有很多关于CORS的问题,但他们似乎没有回答我的问题. 所以我有一个用AngularJS编写的客户端应用程序,用于创建一个移动应用程序(与Apache Cordova).将从移动设备加载html文件和JavaScript文件. 当我模拟它,我发送请求到REST API服务器我第一次得到 所请
我知道有很多关于CORS的问题,但他们似乎没有回答我的问题.

所以我有一个用AngularJS编写的客户端应用程序,用于创建一个移动应用程序(与Apache Cordova).将从移动设备加载html文件和JavaScript文件.
当我模拟它,我发送请求到REST API服务器我第一次得到
所请求的资源上不存在“Access-Control-Allow-Origin”头,因此原址’http:// localhost:82’不允许访问.
所以我添加了标题(“Access-Control-Allow-Origin:*”);在我的php REST API服务器.由于请求将来自移动设备,因此我无法指定特定的域.

现在,当凭证标志为真时,我得到“通配符”*’不能用于“访问控制允许原始”标头.

我终于找到了一个解决方案,但我不知道这样做是安全的.

在我的php REST API服务器中,我添加了这个:

if (isset($_SERVER['HTTP_ORIGIN'])) {
   header("Access-Control-Allow-Credentials: true");
   header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']);
   header("Access-Control-Allow-Headers: *,X-Requested-With,Content-Type");
   header("Access-Control-Allow-Methods: GET,POST,DELETE,PUT");
}

请告知这种工作方式.如果不安全或没有好处,请告诉我如何解决这个问题?

非常感谢!

响应应该仅在Access-Control-Allow-Headers中具有接受的标题,不要使用通配符.

就安全而言,请注意这个post about CORS的@Jules的评论:

Note that sending the HTTP Origin value back as the allowed origin
will allow anyone
to send requests to you with cookies,thus potentially stealing a session from a user
who logged into your site then viewed an attacker’s page. You either want to send ‘*’
(which will disallow cookies thus preventing session stealing) or the specific domains
for which you want the site to work.

另见以下例子:

Wildcard not accepted in Access-Control-Allow-Headers

Specify headers Access-Control-Allow-Headers

替代方法

您可以将origin标题设置为:

Access-Control-Allow-Origin: *

如果您不需要在您的请求中包含Cookie remove:

Access-Control-Allow-Credentials: true

从Access-Control-Allow-Headers中删除通配符并添加授权,然后将该标头作为您的授权请求的一部分,而不是将凭据传递给cookie,例如:

Authorization: Basic a2lkMT==

另外,将OPTIONS添加到允许的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读