gpt4 book ai didi

javascript - Chrome 中 ajax Restful ws 调用期间访问 CORS

转载 作者:行者123 更新时间:2023-12-02 12:03:22 25 4
gpt4 key购买 nike

我有一个完全用 jquery 和 js 编写的基于 Web 的项目。在客户端,我通过像这样的ajax调用restful webservices

 $.ajax({
type: 'GET',
timeout: 1000000000,
headers: { 'Access-Control-Allow-Origin': '*' },
url: serverName + '/getAlerts/',
data: {},
dataType: "text",
success: function (data) {
$scope.alerts = JSON.parse(data);
$scope.$apply();
},
error: function (data) {
alert(errServiceCall);
}
});

在服务器端,在 Spring 中创建了 Restful Web 服务。示例函数就是这样

@RequestMapping(value = "/services/getAlerts", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
@ResponseBody
public String getAlerts(HttpServletRequest request) throws JSONException, IOException, SQLException {
return "hello it's me";
}

在这种情况下,当我尝试在 Chrome 上调用该函数时,我收到以下错误

(index):374 Refused to connect to 'http://servername/services/getAlerts/' because it violates the following Content Security Policy directive: "connect-src 'self'".

如果我将restful url ( http://servername/services/getAlerts )粘贴到chrome地址栏中,它会成功返回结果。

我建议它与 CORS(跨源资源共享)有关,所以我添加了代码

headers: { 'Access-Control-Allow-Origin': '*' },

在我的ajax代码块中。但没有成功。

所以我尝试在服务器端的函数上方添加 @CrossOrigin 参数,就像这样

@CrossOrigin
@RequestMapping(value = "/services/getAlerts", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
@ResponseBody
public String getAlerts(HttpServletRequest request) throws JSONException, IOException, SQLException {
return "hello it's me";
}

但在这种情况下,我在编译时收到以下错误(Java 版本 1.6 + spring 版本 4.3.12)

annotation org.springframework.web.bind.annotation.CrossOrigin is missing < clinit>

如何以最短的方式解决 CORS 问题?

P.S:当我从 Internet 选项 -> 安全 -> 自定义级别 -> 其他 -> 跨域访问数据源(设置启用)打开 CORS 时,所有过程都在 IE 中完美运行

最佳答案

我将下面的代码添加到unix WAS请求服务器中的虚拟主机配置文件中,其中包括在spring框架中创建的restful webservices,它解决了我的问题。现在无需任何浏览器配置,我可以在客户端调用ajax函数而不会出现CORS问题。

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token, x-csrftoken"
Header always set Access-Control-Allow-Credentials "true"

如果您想深入了解该配置,可以访问 that page这很有帮助。

关于javascript - Chrome 中 ajax Restful ws 调用期间访问 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47080396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com