java - 错误无法加载资源: the server responded with a status of 403 () en angular

标签 java angular spring rest api

Errors I get

错误:

Failed to load resource: the server responded with a status of 403 ()
login:1 Access to XMLHttpRequest at 'http://localhost:8080/login' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
core.js:7187 ERROR Error: Uncaught (in promise): HttpErrorResponse: {"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":"http://localhost:8080/login","ok":false,"name":"HttpErrorResponse","message":"Http failure response for http://localhost:8080/login: 0 Unknown Error","error":{"isTrusted":true}}
    at resolvePromise (zone-evergreen.js:797)
    at zone-evergreen.js:707
    at SafeSubscriber._error (Observable.js:91)
    at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
    at SafeSubscriber.error (Subscriber.js:135)
    at Subscriber._error (Subscriber.js:75)
    at Subscriber.error (Subscriber.js:55)
    at MapSubscriber._error (Subscriber.js:75)
    at MapSubscriber.error (Subscriber.js:55)
    at FilterSubscriber._error (Subscriber.js:75)
defaultErrorLogger @ core.js:7187

JAVA spring boot中的POST服务(微服务的url:http:localhost:8080/login):

@CrossOrigin(origins = "*")
@RestController
public class dmoController {

    @SuppressWarnings("rawtypes")
    @PostMapping("/login")
    public ResponseEntity<?> login(@RequestBody String data) {
	System.out.print("entra");
	System.out.print(data);
	HttpHeaders headers = new HttpHeaders();
	headers.add("Access-Control-Allow-Origin", "*");
	headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
	headers.add("Access-Control-Allow-Headers", "X-Requested-With,content-type");
	headers.add("Access-Control-Allow-Credentials", "true");
	return new ResponseEntity<>(headers, HttpStatus.CREATED);
    }

    
}

从 Angular 调用帖子( Angular URL:http:localhost:4200/login):

  public async login(email: string, password: string) {
        const data = { username: 'pepa', password: 'manoli' };

        httpOptions.headers.append('Access-Control-Allow-Origin', '*');
        httpOptions.headers.append(
            'Access-Control-Allow-Methods',
            'GET, POST, OPTIONS, PUT, PATCH, DELETE',
        );
        httpOptions.headers.append(
            'Access-Control-Allow-Headers',
            'X-Requested-With,content-type',
        );
        httpOptions.headers.append('Access-Control-Allow-Credentials', 'true');

        this.http.post(this.url, JSON.stringify(data), httpOptions).toPromise();
    }

最佳答案

解析 Cors 不是客户端的事情,因为它是您的本地主机开发,请求来源会有所不同。 您需要配置服务器,使其允许来自所有来源的请求。

看看这个链接 https://spring.io/guides/gs/rest-service-cors/您可能会发现一些见解。

关于java - 错误无法加载资源: the server responded with a status of 403 () en angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58970698/

相关文章:

java - 使用 Spring Data Cassandra 进行直播(响应式(Reactive))

java - 禁止 JSON 中的单引号值

java - @RequestMapping 没有按预期工作

java - 将 hashmap 的键值存储在 string[] 中

Java套接字编程。如何在后台等待服务器响应?

javascript - Angular - 将属性绑定(bind)和事件添加到组件中的嵌入元素

json - 如何从 json 对象数组获取值并将其添加到 Angular 中的另一个数组

node.js - 如何在 Angular 2 中创建一个导入 QuillJS 模块的组件?

java - @Transactional 和调用两个或多个表的逻辑应该放在哪里?

java - JdbcTemplate queryForInt/Long 在 Spring 3.2.2 中被弃用。应该用什么代替?