Spring MVC 如何从另一个本地主机端口上的前端访问后端?

mrfwxfqh  于 2023-08-06  发布在  Spring
关注(0)|答案(5)|浏览(142)

我们正在制作一个Web应用程序,我们已经将前端和后端拆分为单独的项目。在使用CAS设置安全性之后,我们无法从前端访问后端,得到401 Unauthorized。前端运行在localhost:3000上,而后端运行在localhost:8080上。
我们希望允许端口3000访问端口8080,但我们不知道如何访问,有线索吗?

nlejzf6q

nlejzf6q1#

如果你在前端和后端运行两个独立的项目,你需要编写RESTAPI。要访问后端示例,您需要设置身份验证,它可能是CSRF或CORS。请查看spring Boot https://spring.io/guides/gs/rest-service-cors/的cors文档
它是用于csrf https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html

pvcm50d1

pvcm50d12#

如果你试图与两个不同的项目通信,你需要编写RESTAPI,因为你使用不同的端口号,出于安全目的,你需要启用跨源。引用此https://www.concretepage.com/spring-4/spring-4-rest-cors-integration-using-crossorigin-annotation-xml-filter-example

fafcakar

fafcakar3#

Front end : localhost:3000/yourfilename.html

**Front end** default port of xamp port is 80. So We re basically use 
localhost/yourfilename.html. But Here used 3000 port. so We should call port 
number with that url 

**Back end** : localhost:8080/apiurl
It is ordinary port of backend.

字符串

6mzjoqzu

6mzjoqzu4#

我使用Nestjs作为后端,下面的代码在main.ts文件中足以处理来自前端的请求。(根据您的要求调整URL)

import { NestFactory } from '@nestjs/core';

import { AppModule } from './app.module';

async function bootstrap() {

  const app = await NestFactory.create(AppModule);

  // Configure CORS

  app.enableCors({

    origin: 'http://localhost:5173', // Allow requests from frontend

    methods: ['GET', 'POST', 'PUT', 'DELETE'], // Specify allowed HTTP methods

    allowedHeaders: ['Content-Type', 'Authorization'], // Specify allowed headers
    preflightContinue: false,

 // Disable preflight requests

    optionsSuccessStatus: 204, // Return 204 for preflight requests

    credentials: true, // Allow sending cookies and authentication headers
  });

  await app.listen(3000);
}

bootstrap();

字符串

dgtucam1

dgtucam15#

401 Unauthorized错误意味着您的前端确实能够与后端通信,但由于您设置的安全性,无法发送必要的信息来验证和授权请求。这就是为什么你得到一个401错误。
请确保前端发送所请求的信息以验证请求,或者确保用户具有访问所请求资源的适当授权。

相关问题