簡體   English   中英

Java Webapp響應我的登錄頁面的源代碼

[英]Java webapp responding the source code of my login page

我有一個Java Web應用程序,該應用程序發布了以JSON格式返回對象的服務,還有另一個Java Web應用程序僅用於通過JSONP調用使用該服務並顯示響應。 在我的本地計算機上,它運行良好,但是現在我想在Web環境中進行測試(在我的案例中為Layershift),所以我無法獲取JSON對象。 我沒有在Chrome開發人員工具上看到任何錯誤,但是當我查看“響應”選項卡(在“網絡”選項中)時,我看到了應用程序登錄頁面的源代碼。 讓我告訴你我的代碼
控制器與服務:

@RestController
public class MyController {
@RequestMapping(value="/myservice/get/{somevar}")
public MappingJacksonValue getMyObject (@RequestParam String callback, @PathVariable String somevar, HttpServletRequest request, HttpServletResponse response) {
    MyObject obj = new MyObject();
    //some logic
    MappingJacksonValue value = new MappingJacksonValue(obj);
    value.setJsonpFunction(callback);
    return value;
}

}

用於調用服務的javascript代碼:

$.fn.callWithJsonP = function(somevar) {
var url = "/myservice/get/" + somevar + "?callback=myCallback";
$.getJSON(url, function(data) {
    if (data.value.status == "OK") {
        //shows the data contained
    }
});
}

在兩個應用程序中都存在Apache配置(為避免CORS錯誤而添加)

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
Header always unset X-Frame-Options

這在muy本地計算機上工作得很好(除了Apache,我不在本地使用它),但是正如我所說,在Web環境中,我收到了登錄頁面的源代碼。 在“標題”選項卡中,我可以看到在Apache中添加的標題,並且響應的狀態代碼還可以,有關發生了什么的任何線索?
親切的問候

更新
我刪除了Apache Web服務器,甚至用Postman(意味着沒有第二個應用程序)測試了Web服務,結果仍然相同。 我嘗試將@RestController更改為@Controller並返回MyObject的實例(而不是MappingJacksonValue),但沒有結果,請幫幫我

我可能不在這里,但是在REST框架能夠將它的get請求映射到端點之前,是否有servlet過濾器或Web應用程序配置的其他部分可以將get請求路由到登錄頁面? 我通常為此使用Jersey,所以我不熟悉Spring的RestController,但我認為它在做類似的事情-將與Java代碼匹配的URL路由。 如果您看到登錄頁面作為響應,這聽起來像是有某種干擾,並試圖在Spring將您定向到您的終結點方法之前強制用戶登錄。

似乎您的服務器中設置了一個后備設置,可能是為單個頁面應用程序配置的。 這通常用於使用諸如angular的路由器以HTML5模式進行路由。

由於登錄失敗並且您被重定向到同一頁面,因此您將獲得登錄頁面代碼作為響應。

因此,在調用服務之前,首先需要進行身份驗證,然后使用身份驗證令牌來調用服務。

暫無
暫無

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

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