Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java rest调用获取url net::ERR_失败_Java_Angular_Spring_Typescript_Spring Boot - Fatal编程技术网

java rest调用获取url net::ERR_失败

java rest调用获取url net::ERR_失败,java,angular,spring,typescript,spring-boot,Java,Angular,Spring,Typescript,Spring Boot,我正在写一个rest调用,如下所示 authenticationService(username: string, password: string) { debugger; let params = new HttpParams(); params = params.append('username', username); params = params.append('password', password); return this.http.ge

我正在写一个rest调用,如下所示

authenticationService(username: string, password: string) {
    debugger;
    let params = new HttpParams();
    params = params.append('username', username);
    params = params.append('password', password);
    return this.http.get(`http://localhost:8080/api/v1/basicauth?`,{params},
      ).pipe(map((res) => {
        this.username = username;
        this.password = password;
      }));
  }
从spring boot end开始,我使用@RequestParams,如下所示

@GetMapping(path = "/basicauth")
    public AuthenticationBean helloWorldBean(@RequestParam(name = "username") String username,@RequestParam(name = "password") String password) {
        String status = authenticationService.isUserAuthenticated(username, password);
             return new AuthenticationBean("You are not authenticated");
    }
我得到的错误如下


请帮我做这个。谢谢:)

您可以使用Angular dev服务器提供的内置代理选项。有关更多信息,请参阅

在src文件夹中创建proxy.config.json并添加以下内容:

src/proxy.config.json

{
    "/api": {
        "target": "http://localhost:8080",
        "secure": false,
        "changeOrigin": true
    }
}
...
"architect": {
  "serve": {
    "builder": "@angular-devkit/build-angular:dev-server",
    "options": {
      "browserTarget": "your-application-name:build",
      "proxyConfig": "src/proxy.config.json"
    },
...
然后在AuthenticationService文件中,修改HTTP调用,如下所示:

this.http.get<any>('/api/v1/basicauth', { params }).subscribe();
替代方法

angular.json

{
    "/api": {
        "target": "http://localhost:8080",
        "secure": false,
        "changeOrigin": true
    }
}
...
"architect": {
  "serve": {
    "builder": "@angular-devkit/build-angular:dev-server",
    "options": {
      "browserTarget": "your-application-name:build",
      "proxyConfig": "src/proxy.config.json"
    },
...
现在,您可以像往常一样使用
ngserve
命令而不使用--proxy config标志

注意

  • 现在,您可以调用localhost:8080服务器公开的任何端点,而无需如上所示的主机名,并且该端点将正常工作。但请注意,这仅在开发人员设置/工作流中有效

  • 在更高的环境(如生产环境)中,您必须从与后端服务器相同的域托管Angular应用程序,以避免CORS错误。但请注意,这不是克服CORS错误的唯一可用选项

  • 正如从代码片段中观察到的,您不需要在URL的末尾添加“?”,因为如果设置了params对象,它是由HttpClient自动生成的


  • 希望这有助于。。。干杯,快乐编码

    这回答了你的问题吗?我不认为这个问题与CORS有关。@Codelover,尝试添加@CrossOrigin(origins=”host://url_of_your_frontend_server:port)添加到您的控制器。@NikitaLebed@CrossOrigin(origins=“)我已经添加了。@Codelover也发布了您的跨源配置文件,并且从您的注释中可以看出您缺少协议(http)为什么我们需要使用
    ng serve--proxy config src/proxy.config.json
    我们可以只使用
    ng servle
    @Codelover编译吗?proxy config标志通知angular cli包含代理设置。有两种方法通知cli有关代理设置。一种方法是在运行ng serve co时使用标志指定它mmand或者您可以在angular.json文件中指定它们。我已经编辑了我的答案,以包含可选的appraoch。