我在Java Web服務使用Jersey.I創建資源作爲followes實現跨資源產地共享:無法在JavaScript中將CORS POST請求發送到java web服務(球衣)?
@POST
@Path("/getSubjects")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getSubjects(TokenCheck tc) throws IOException, ServletException{
String token = tc.getToken();
String result = "";
if(!token.equals("") && !token.equals(null)){
context.getRequestDispatcher("/GetSubjectsWs?token="+token).include(request, response);
String subs = request.getAttribute("subjects").toString();
result = "{\"subjects\":\""+subs+"\"}";
}else {
result = "{\"subjects\":\"['Invalid Token login again']\"}";
}
JSONObject j = null;
try {
j = new JSONObject(result);
} catch (JSONException e) {
e.printStackTrace();
}
return Response.status(200).entity(j).header("Access-Control-Allow-Origin", "*").header("Access-Control-Allow-Methods", "POST, GET, OPTIONS").header("Access-Control-Allow-Headers", "Content-Type:application/json").build();
}
,並使用JavaScript作爲使POST請求:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript Client</title>
<script type="text/javascript">
function restReq() {
var url = "http://localhost:8888/WebservicesServer/restful/getserver/getSubjects";
var json = {
"token":"8495C211F11C9B18E6651E03EB2995BC"
};
var client = new XMLHttpRequest();
client.open("POST", url, true);
client.setRequestHeader("Access-Control-Request-Methods", "POST");
client.setRequestHeader("Content-Type", "application/json");
client.send(json);
client.onreadystatechange = function() {
if (client.readyState == 4) {
if (client.status == 200)
console.log("success: " + client.responseText);
else
console.log("error: " +client.status+" "+ client.responseText);
}
};
}
</script>
</head>
<body>
<input type="button" value="getSubjects" onclick="restReq();">
</body>
</html>
當我點擊getSubjects按鈕在鉻我得到錯誤爲:XMLHttpRequest無法加載..本地主機:8888/WebservicesServer/restful/getserver/getSubjects。 Access-Control-Allow-Origin不允許原始空值。 但我能夠得到迴應與GET請求,問題是與POST請求 我的瀏覽器url文件://E:/Documents%20and%20Settings/Srinivas/Desktop/wars/JSClient2.html (文件系統)我嘗試了很多方式,比如設置origin等,仍然無法獲得json響應(Server是Tomcat 7),請幫助解決這個問題。
謝謝你的回覆。所以我已經註冊了這個過濾器在web.xml和請求資源和以前一樣,這將添加標題的響應? – 2013-02-27 04:35:25
是的,這將被添加到所有回覆。 – jgm 2013-02-27 08:04:31