Angular 4 http发布请求google captcha api失败

时间:2017-06-03 23:23:18

标签: angular http post

我尝试使用角度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}

当我查看我的网络标签时,它似乎成功了:

Network

Network

这是我的代码:

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));
  }
}

对不起,如果这是一个不起眼的问题,但我是棱角分明的新人。

由于

1 个答案:

答案 0 :(得分:0)

好的事实证明只是谷歌错过了cors标题....我能够通过让我自己的api将请求发送给谷歌然后将其返回给我来解决这个问题。