如何在角度5中设置“ Access-Control-Allow-Origin”?

时间:2018-10-09 11:55:51

标签: angular http preflight

我正试图从5号角获取请求,如下所示:

public showHeatMap(){
        console.log("in showHeatMap")
        let headers = new Headers();
        headers.append('Access-Control-Allow-Origin' , '*');
/*      
        headers: new HttpHeaders({
            'Content-Type':  'image/png',
            'Access-Control-Allow-Origin': '*'
        }) */
        this.http.get(this.showHeatMapURL,{headers: headers}).toPromise().then((res)=>{
            console.log("reading response....")
            console.log(res);
      });
    }

但是由于“对预检请求的响应未通过访问控制检查:请求的资源上没有'Access-Control-Allow-Origin'标头,因此出现了错误。

3 个答案:

答案 0 :(得分:0)

如果您将Spring用作后端服务器。您可以使用@CrossOrigin批注来解决它。

就像:

@CrossOrigin
@RestController
public class DemoController {
    @GetMapping("/getHeatMap") 
    public Object getHeatMap() {
    ...
    }
}

此注释对于单个功能也很有用。

答案 1 :(得分:0)

您需要在Web Api中启用CORS。全局启用CORS的更简单,更可取的方法是将以下内容添加到web.config

using namespace cv;
using namespace ml;
using namespace std;


Ptr<ANN_MLP> mlp = ANN_MLP::create();

Mat layersSize = Mat(3, 1, CV_16U);
layersSize.row(0) = Scalar(inputTrainingData.cols);
layersSize.row(1) = Scalar(hiddenLayerSize);
layersSize.row(2) = Scalar(outputTrainingData.cols);
mlp->setLayerSizes(layersSize);

mlp->setActivationFunction(ANN_MLP::ActivationFunctions::SIGMOID_SYM);

TermCriteria termCrit = TermCriteria(
    TermCriteria::Type::COUNT + TermCriteria::Type::EPS,
    100000000,
    0.000000000000000001
);
mlp->setTermCriteria(termCrit);

mlp->setTrainMethod(ANN_MLP::TrainingMethods::BACKPROP);

Ptr<TrainData> trainingData = TrainData::create(
    inputTrainingData,
    SampleTypes::ROW_SAMPLE,
    outputTrainingData
);

mlp->train(trainingData);

答案 2 :(得分:-1)

如果您将Spring Boot用作后端,则可以添加该解决方案

在我的情况下,

@Controller类上方的CrossOrigin正在工作。