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' 标头? [复制]
带有 IE、XMLHttpRequest 和 ssl (https) 的 CORS
跨域ajax调用失败-Angular.js节点js + express