当前位置: 首页 > 知识库问答 >
问题:

react js中的Axios Post出现错误:请求的资源上不存在“访问控制允许来源”标头

董新觉
2023-03-14

我正在尝试在我的Web应用程序中使用响应在后端使用Spring启动来创建登录页面。我正在使用Spring SecurityJDBC身份验证进行登录。我正在尝试将我的JSP页面转换为React。登录在JSP和Spring boo中运行良好。现在我正在尝试使用react创建相同的页面。但是当我使用axios post发布时,我发现错误

CORS 策略已阻止从源“http://localhost:3000”在“http://localhost:8080/onlineshopping/login”处访问 XMLHttpRequest:请求的资源上不存在“访问控制-允许-源”标头。

这是axios Post

export const Login = (username, password) => async dispatch => {
console.log(password)
let params = {
  username: username,
  password: password
}

const res = await axios.post("http://localhost:8080/onlineshopping/login", {params});
  dispatch({
    type: Login,
    payload: res.data
  });
};

安全配置.java

@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
        .jdbcAuthentication()
        .usersByUsernameQuery("select email, password, enabled from user_detail where email = ?")
        .authoritiesByUsernameQuery("select email, role from user_detail where email = ?")
        .dataSource(dataSource)
        .passwordEncoder(bCryptPasswordEncoder);
}

Pagecontroller.java

@RestController
@CrossOrigin
public class PageController {

@RequestMapping("/login")
    public Map<String, Object> login(
            @RequestParam(name = "error", required = false) String error,
            @RequestParam(name = "logout", required = false) String logout) {

        Map<String, Object> map = new HashMap<String, Object>();
        System.out.println("Login");
        map.put("title", "Login");
        if (error != null) {
            map.put("message", "Username and Password is invalid!");
        }
        if (logout != null) {
            map.put("logout", "You have logged out successfully!");
        }
        return map; 
    }

}

请告诉我为什么我得到这个错误和如何解决它。

共有3个答案

李兴庆
2023-03-14

您必须为 API 调用创建代理。

在这里,代理使用url模式来匹配api调用并将它们重定向到相应的服务器。

尝试以下操作:

> < li>

安装http代理中间件

npm install http-proxy-middleware --save

创建 src/setupProxy.js

const proxy = require('http-proxy-middleware');

module.exports = function(app) {

   app.use(proxy('/api', { target: 'http://localhost:8080/' }));

};

然后运行本地开发服务器

禹正阳
2023-03-14

在Spring boot中添加CORS过滤器配置并将内容类型添加到axios中的application/x-WW-form-urlencoded请求后,我的问题解决了。

export const addProjectTask = (username,password, history) => async dispatch => {

axios.post('http://localhost:8080/onlineshopping/login', 
  Qs.stringify({
  username: username,
  password: password
  }), {
  headers: { 
  "Content-Type": "application/x-www-form-urlencoded"
}})
.then(function (response) {
  console.log(response);
  history.push("/");  
})
.catch(function (error) {
  console.log(error);
});
};
高增
2023-03-14

您必须将代理地址添加到package.json文件中,例如:

    },
  "proxy": "http://localhost:8080",
  "devDependencies": {

接下来,只需添加localhost后面的所有元素,即。

axios.get("/onlineshopping/login")
 类似资料:
  • 我在这里开始失去理智。我的项目在Spring boot和React上运行,我正在尝试实现注销功能。我想让它工作: 用户已登录。 用户单击注销 JWT令牌cookie被删除,用户被重定向到localhost:3000 从反应应用程序(localhost:3000),我想调用Spring Boot服务器(localhost:8080/exit)上的“/out”endpoint。除了我的实现之外,cor

  • 我试图加载一个测试网页(在我的服务器)。页面是: 但是webView没有加载页面。甚至在@-50之后也没有呼叫 此外,从url加载js脚本的所有站点都会出现此问题。包括youtube、fb等。 这里我的设置 布局:

  • 我试着把数据从React.jslocalhostinsert.php文件。当我提交的形式从reactjs它给我错误的控制台错误是: 访问位于“”的XMLHttpRequesthttp://localhost/reactphpdemo/connect.php“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在'access

  • 我犯了这个错误 无法加载XMLHttpRequesthttp://domain.com/canvas/include/rs-plugin/js/extensions/revolution.extension.video.min.js.飞行前响应中的访问控制允许标头不允许请求标头字段X-Requested-With。 我的php页面顶部有这两行代码,用于加载这个js文件。 但是问题依然存在,我该怎么

  • 我试图获取一个API请求,但它正在返回此错误访问XMLHttpRequest at'https://api.deezer.com/chart'从起源'http://localhost:3000'已被CORS策略阻止:没有'访问-控制-允许-起源'标头存在于请求的资源。 密码

  • CORS策略阻止从http://localhost:8000/api/product/http://localhost:3000获取数据:请求的资源上不存在访问控制允许来源标头。如果不透明的响应满足您的需求,请将请求的模式设置为no-cors,以在禁用CORS的情况下获取资源。