2017-06-03 116 views
0

我想通過使用角4的http庫和谷歌的siteverify API來驗證我的驗證碼響應。 出於某種原因,在控制檯它的印刷:Angular 4 http發送請求到谷歌驗證碼API失敗

跨來源請求阻止:同源策略不允許在https://www.google.com/recaptcha/api/siteverify讀取遠程資源。 (原因:缺少CORS頭'Access-Control-Allow-Origin')。

而且

錯誤對象{_body:錯誤,狀態:0,OK:假,狀態文本: 「」,標題:對象,類型:3,網址:空}

當我檢查我的網絡選項卡似乎全成:

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

對不起,如果這是一個nooby的問題,但我是新來的角。

感謝

回答

0

好原來它只是谷歌缺少CORS標頭....我能夠有自己的API發送給Google,然後還給我的要求來解決這個問題。