【问题标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'http://localhost:4200'
【发布时间】:2017-08-16 18:49:16
【问题描述】:

在我的 Angular 项目中,我调用了 rest api,但是当我调用时,我得到了 cors 错误。我试图添加标题但我无法解决。 itride all 但未能解决。

如何在 Angular 2 中添加 cors(请提供完整的导入和代码) 我是否必须在服务器中的 restapi 页面中启用代码

查看我在 localhostL:4200 中的 angular2 项目

import {Injectable} from '@angular/core';
import 'rxjs/Rx';
import { Http , Response, Headers, RequestOptions } from'@angular/http';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

import 'rxjs/add/observable/throw';

@Injectable()
 export class LoginService {
 constructor(private _http:Http){}

  getCurrentTime(){
 var header = new Headers();
 header.append('contentType','application/json; charset=utf-8');
 header.append('Accept','application/json');
 header.append('Access-Control-Allow-Origin', '*');
var option = new RequestOptions();
 option.headers = header;
 return 
this._http.get('http://is.com/equityjs.php',option)
.map(res=>res.json());

 }

}

和我的 php 页面

    <?php
  include_once 'config.php';
$connection = mysql_connect($servername, $username, $passwd)or die("not 
   comnnection"); // Establishing Connection with Server
mysql_select_db($db); // Selecting Database from Server

$result=mysql_query("SELECT * FROM equity ORDER BY MONTH(Date) DESC, DAY(DATE) DESC ,TIME(DATE)");
$response["equty"] = array();  

    while($row = mysql_fetch_assoc($result))    {

        $stuff= array();

        /* ADD THE TABLE COLUMNS TO THE JSON OBJECT CONTENTS */
        $bse["title"] = $row['title'];
         $bse["string"] = $row['equity_string'];
         $bse["date"] = $row['date'];
        $bse["target"]=$row['target'];
            $bse["target2"]=$row['target2'];
          $bse["bse_id"]=$row['bse_id'];
        $bse["stoploss"]=$row['stoploss'];
            $bse["position"]=$row['selectreq'];
        $bse["timeframe"]=$row['timeframe'];
        $bse["status"]=$row['status'];
        array_push($response["equty"], $bse);

        // $response[] = $row;
    }
    // success

    echo(json_encode($response));


/* CLOSE THE CONNECTION */
  mysql_close();
?>

【问题讨论】:

    标签: php json cors angular2-services


    【解决方案1】:

    您必须在服务器端允许来源,在您的代码中试试这个:

     <?php
     header("Access-Control-Allow-Origin: *");
    

    【讨论】:

    • 只有这个代码就足够了,否则我必须从角度发送 heder
    • 由于“*”,此代码为任何请求启用 CORS。您可以在 Angular 代码中声明来源,并限制响应仅允许此请求。有关 CORS 的更多详细信息,您应该阅读:developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多