2017-07-25 26 views
1

我在客戶端使用Spark和Java和Angular 1。 當我向服務器發送請求時,我不斷收到'-1'錯誤。 錯誤是「No」訪問控制允許來源「標題出現在請求的資源上,因此不允許原始'http://localhost:4567'訪問。」Spark CORS訪問控制允許來源錯誤

我知道這是一個CORS問題,所以我添加了頭部'Access-Control-Allow-Origin':'*'並將它添加到服務器端的響應中。 不幸的是,它似乎並沒有解決我的問題。

需要你的幫助的人, 謝謝!

+1

剛剛嘗試了自己設置'接入控制允許Origin'爲' *'並且工作得很好。你能顯示一些代碼嗎? – Yevgeniy

+0

當然,我在這裏使用示例 https://sparktutorials.github.io/2016/05/01/cors.html 客戶端是否需要更改? –

+0

你可能想試試這個https://stackoverflow.com/a/33736267/2960660 –

回答

3

我已經使用了成功(我在這裏找到:https://gist.github.com/zikani03/7c82b34fbbc9a6187e9a):下面

//add correct package 

import com.mpaw.app.controllers.Apply; 
import java.util.HashMap; 
import spark.Filter; 
import spark.Request; 
import spark.Response; 
import spark.Spark; 

/** 
* Really simple helper for enabling CORS in a spark application; 
*/ 
public class CorsFilter /*implements Apply*/{ 

    private final HashMap<String, String> corsHeaders = new HashMap<>(); 

    public CorsFilter() { 
     corsHeaders.put("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS"); 
     corsHeaders.put("Access-Control-Allow-Origin", "*"); 
     corsHeaders.put("Access-Control-Allow-Headers", "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin,"); 
     corsHeaders.put("Access-Control-Allow-Credentials", "true"); 
    } 

    @Override 
    public void apply() { 
     Filter filter = new Filter() { 
      @Override 
      public void handle(Request request, Response response) throws Exception { 
       corsHeaders.forEach((key, value) -> { 
        response.header(key, value); 
       }); 
      } 
     }; 
     Spark.after(filter); 
    } 
} 

用法:

public static void main(String[] args) { 
    CorsFilter.apply(); // Call this before mapping thy routes 
    Spark.get("/hello", (request, response) -> { 
     return "Hello"; 
    }); 
} 
相關問題