我尝试使用角度4的http库和google的siteverify api来验证我的验证码响应。 出于某种原因在控制台中打印:
阻止跨源请求:同源策略禁止在https://www.google.com/recaptcha/api/siteverify读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。
和
ERROR对象{_body:错误,状态:0,ok:false,statusText:"",headers:Object,type:3,url:null}
当我查看我的网络标签时,它似乎成功了:
这是我的代码:
import { Injectable } from '@angular/core';
import { Http, URLSearchParams, Headers } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class CaptchaService {
captchaUrl = 'https://www.google.com/recaptcha/api/siteverify';
secretKey = 'SECRETKEY';
constructor(private http: Http) { }
verifyCaptcha = function(captchaResponse) {
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let body = new URLSearchParams;
body.set('secret', this.secretKey);
body.set('response', captchaResponse);
return this.http.post(this.captchaUrl, body, { headers: headers })
.map((response) => response.json())
.subscribe((data) => console.log(data));
}
}
对不起,如果这是一个不起眼的问题,但我是棱角分明的新人。
由于
答案 0 :(得分:0)
好的事实证明只是谷歌错过了cors标题....我能够通过让我自己的api将请求发送给谷歌然后将其返回给我来解决这个问题。