【问题标题】:No 'Access-Control-Allow-Origin' (Cross Origin ) [duplicate]没有'Access-Control-Allow-Origin'(跨域)[重复]
【发布时间】:2019-02-28 23:33:58
【问题描述】:
// getting cross-origin error in Web API 

    import { Injectable } from '@angular/core';
    import { Http, Headers, Response, RequestOptions } from '@angular/http';
    import { HttpClient, HttpHeaders } from '@angular/common/http'
    import { Observable } from 'rxjs/internal/Observable';
    import { FormGroup, FormBuilder, Validators } from '@angular/forms';
    import { map } from 'rxjs/operators';

    @Injectable()
    export class HomeService {

      constructor(private http: Http) {

      }
      getPrice() {

        const headers = new Headers();
        headers.set("Access-Control-Allow-Headers", "Origin, Content-Type, Accept");
        headers.set("Access-Control-Allow-Origin", "*");

        const options = new RequestOptions({ headers: headers });
        return this.http.get("http://localhost:8084/getPriceDetails", options).pipe(map(data => data))
      };
    }

//Java类文件

package com.xyz.Action;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
import org.apache.struts.action.ActionForward;
import org.apache.struts.actions.LookupDispatchAction;
import java.util.ArrayList;

public class dataAction extends LookupDispatchAction {

    private ResourceBundle getResourceBundle() {
        ResourceBundle resourceBundle = null;

        return resourceBundle;
    }

    @Override
    protected Map getKeyMethodMap() {
        Map map = new HashMap();
        map.put("getPriceDetails", "getPriceDetails");
        return map;
    }

    public String getPriceDetails() {

       String str = "In Data Action";
        System.out.println("com.xyz.Action.dataAction.getPriceDetails()"+str);
        return str;
    }
}

我正在尝试从前端(Angular)访问后端(java)。但是遇到了这个跨域问题。所以我也添加了标题,但它不起作用。 我想我必须更改后端代码。但不知道在哪里和什么。

Java 代码(我刚刚创建了一个 java 应用程序。我正在尝试在前端和后端之间进行通信。)

【问题讨论】:

  • CORS 问题是服务器端错误,而不是前端错误。我正在删除您的 ANGualr 标签并使用更合适的标签。随意发布您的服务器代码。
  • 你在用spring-boot吗?
  • 实际上,我刚刚为 backed 创建了 java 代码,但没有设置任何 spring-boot。目前,我只是尝试从前端到后端进行通信。你能告诉我如何连接吗?
  • @Lovely 你能发布后端代码吗?让我们看看
  • 我添加了后端动作文件。

标签: java cors cross-domain


【解决方案1】:

如果您使用的是 spring-boot,只需使用以下配置。它会工作

@Bean
   public WebMvcConfigurer corsConfigurer() {
      return new WebMvcConfigurer() {
         @Override
         public void addCorsMappings( CorsRegistry registry ) {
            registry.addMapping( "/**" )
               .allowedOrigins( "*" )
               .allowedMethods( "*" )
               .allowedHeaders( "*" )
               .allowCredentials( true );
         }
      };
   }

如果启用了 spring 安全性,则使用

@Override
protected void configure(HttpSecurity http) throws Exception { 
   http.cors().disable()
......
......
}

【讨论】:

  • 我没有设置任何弹簧靴。只是试图在前端和后端之间建立连接。
猜你喜欢
  • 1970-01-01
  • 2013-11-23
  • 2017-11-14
  • 2016-09-21
  • 1970-01-01
  • 2019-02-06
  • 2016-08-12
  • 2015-07-18
  • 1970-01-01
相关资源
最近更新 更多