簡體   English   中英

對 SpringBoot 控制器的 AJAX 調用導致 CORS 錯誤

[英]AJAX call to SpringBoot controller causes CORS error

我正在使用 AJAX 將 JSON 傳遞給我的控制器。 但我無法這樣做,因為我收到如下 CORS 錯誤:

訪問 XMLHttpRequest at ........ from origin 'null' 已被 CORS 策略阻止:對預檢請求的響應未通過訪問控制檢查:沒有 'Access-Control-Allow-Origin' 標頭存在請求的資源。

這是我的 Javascript 和嵌入式 AJAX 調用:

database.on('child_added', function (snapshot) {
        var data = {};
        data["CaptainName"] = snapshot.val().CaptainName;
        data["CookName"] = snapshot.val().CookName;
        data["LogicalConditions"] = snapshot.val().LogicalConditions;

        $.ajax({
          headers:  { 'Access-Control-Allow-Origin': '*' },
          type: "GET",
          contentType: "application/json",
          url:"my-localhost/application/print",
          data: JSON.stringify(data),
          dataType: 'json',
          cache: false,
          success: function(){
            console.log("Successfully sent payload")
          },
          error: function(e){
            console.log("Error:" , e)
          }
        });

這是我的控制器:

@CrossOrigin(origins = "*", allowedHeaders = "*")
@RestController
@RequestMapping("/application")
public class AppController
{
    @PostMapping("/print")
    public void print(@RequestBody String st)
    {
        System.out.println(st);
    }
}

有任何想法嗎 ?

以下配置可能需要在后端完成。 將此代碼粘貼到您的 @configuration 類之一中。 例如 SecurityConfiguration.java 類。

 @Bean
        public FilterRegistrationBean corsFilter() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            CorsConfiguration config = new CorsConfiguration();
            config.setAllowCredentials(true);
            config.addAllowedOrigin("http://localhost:3000");
            config.addAllowedHeader("*");
            config.addAllowedMethod("*");
            source.registerCorsConfiguration("/**", config);
            FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
            bean.setOrder(0);
            return bean;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM