Ajax Angular SSL CORS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax Angular SSL CORS相关的知识,希望对你有一定的参考价值。

我实际上不明白这个问题。我对SSL和证书的了解不多。

test.kanubox.de上的脚本(您可以在那里尝试并查看源代码)使用ajax在sandbox.api.kehrwasser.com/kanubox/v1上调用rest服务器。显然,CORS是必需的,并且在没有SSL的情况下运行良好,因此我假设CORS设置正确。 API的OPTIONS请求(预检)上的标题数据确认

Access-Control-Allow-Origin: *
Upgrade: h2,h2c
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Content-Type: application/json
Content-Encoding: gzip
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT
Server: Apache/2.4
Expires: Fri, 19 Aug 2016 12:15:58 GMT
Access-Control-Max-Age: 500
Access-Control-Allow-Headers: x-requested-with, Content-Type, origin, authorization, accept, client-security-token, Access-Control-Allow-Origin, X-Frame-Options

但是,当我切换到https://test.kanubox.de并在https://sandbox.api.kehrwasser.com/kanubox/v1调用API时,我从FireFox获得CORS错误,如“(Cross-Origin阻止)

Reason: CORS-Header 'Access-Control-Allow-Origin' missing

(翻译错误信息)

证书来自我的主机,并由我的主机验证。我不确定,那么它是“自签名的”吗?所以也许FF会阻止它,因为它不信任它?

这是我的代码:

  var test = angular.module("test", []);

  test.constant('apiConfig', {
      apiUrl: "https://sandbox.api.kehrwasser.com/kanubox/v1"
  });

  test.controller("TestController", function($scope, $http, apiConfig) {

      var credentials = { mail: "user@mailserver.com", password: "12345" };

      // POST REQUEST VIA SSL
      $http({
          url: apiConfig.apiUrl + "/users/auth/",
          method: 'POST',
          data: credentials
      }).success(function(data, status, headers, config) {

          $scope.variable = data;

      }).error(function(data, status, headers, config) {

          $scope.variable = data;

      });

  });
答案

如果我浏览到https://test.kanubox.de/,那么我的firefox浏览器中不知道服务器证书。它是由“Hostpoint DV SSL CA-G2”本身发行的自签名证书!

要使SSL证书有效,您需要在浏览器中使用“Hostpoint”根证书。这正是你的工作方式!所以,是一个值得信赖的ROOT证书问题。

解决SSL问题后,您可以查看CORS问题。

https://sandbox.api.kehrwasser.com/kanubox/v1/中使用的证书是由着名的CA“Let's incrypt”发行的。这很好。

以上是关于Ajax Angular SSL CORS的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Angular 1 + ajax + CORS 策略上的 No 'Access-Control-Allow-Origin' 标头? [复制]

Angular PUT 请求通过 SSL 被禁止

带有 IE、XMLHttpRequest 和 ssl (https) 的 CORS

跨域ajax调用失败-Angular.js节点js + express

无法使用 cors 从 angular 2 获取所有响应标头

angular-js cors 请求未到达服务器