[英]How to consume rest web service from ajax call
我想從ajax調用我的其余Web服務。 我的服務網址是“ https://scv-dev.com/cdcAug/surveys/surveyData ”。 我可以從其他客戶端(firefox瀏覽器)調用此服務,但是嘗試從ajax調用時卻出錯。
Ajax通話:
$.ajax({
type: "POST",
url: "https://scv-dev.com/cdcAug/surveys/surveyData",
data: JSON.stringify({surveyId:1}),
dataType: "json",
headers: {
Accept: "application/json",
"Access-Control-Allow-Origin": "*"
},
success: function (data) {
alert(1);
},
error: function (jqXHR) {
alert(2);
}
});
以下是網站服務的代碼:
@RequestMapping(value = "/surveyData", method = RequestMethod.POST, headers = "Accept=application/json")
public @ResponseBody
SurveyDataResponse getSurveyData(@RequestBody SurveyResApp surveyResApp,
final HttpServletResponse httpResponse) {
..............
}
您似乎對Access-Control-Allow-Origin: *
感到困惑。 那是服務器返回的東西,而不是客戶端設置的東西。
看來您有一個同源訪問錯誤,在瀏覽器錯誤日志中查找或診斷返回的錯誤代碼應該可以告訴您發生了什么事情。
您可能需要通過將標頭Access-Control-Allow-Origin: *
到服務器響應中來啟用Web服務以進行跨源訪問。 請參閱此處的示例。
我創建了在下面的代碼中添加的過濾器類,以在響應中添加“ Access-Control-Allow-Methods”。
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD");
response.addHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept");
response.addHeader("Access-Control-Max-Age", "1728000");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.