我想访问来自同一个域但不同端口号的信息,为此我在响应头中添加了< code > Access-Control-Allow-Origin 。
Servlet Code:(现载于www.example.com:PORT_NUMBER)
String json = new Gson().toJson(list);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.setHeader("Access-Control-Allow-Origin", "*");//cross domain request/CORS
response.getWriter().write(json);
jQuery code:(存在于 www.example.com)
$.post('http://www.example.com:PORT_NUMBER/MYSERVLET',{MyParam: 'value'}).done(function(data)
{
alert(data);
});
有几次我收到此错误(在控制台中):
XMLHttpRequest cannot load 'http://www.example.com:PORT_NUMBER/MYSERVLET'
No 'Access-Control-Allow-Origin' header is present on the requested resource.
此错误主要发生在第一次执行 $.post
时。第二次允许。
我的问题是servlet
或jQuery
代码中是否缺少?
如有任何建议,我们将不胜感激。
更新1
我变了:
response.setHeader("Access-Control-Allow-Origin", "*");
致:
response.setHeader("Access-Control-Allow-Origin", "http://www.example.com");
然后我在控制台中收到这个错误:
XMLHttpRequest cannot load http://www.example.com:PORT_NUMBER/MyServletName
The 'Access-Control-Allow-Origin' whitelists only 'http://www.example.com'
Origin 'http://www.example.com' is not in the list,
and is therefore not allowed access.
[注意:白名单和来源相同,但仍然会出错。它有时有效,有时给出上述错误。
如果你需要更多信息,请告诉我。
我在Spring找到了解决办法。io,像这样:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
您在$. post()
方法中缺少'json'dataType:
$.post('http://www.example.com:PORT_NUMBER/MYSERVLET',{MyParam: 'value'})
.done(function(data){
alert(data);
}, "json");
//-^^^^^^-------here
更新:
试试这个:
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
解决方案:
我没有使用setHeader
方法,而是使用了addHeader
。
response.addHeader("Access-Control-Allow-Origin", "*");
上面一行中的< code>*将允许访问所有域,仅允许访问特定域:
response.addHeader("Access-Control-Allow-Origin", "http://www.example.com");
对于与 IE 相关的问题
但是我遇到以下错误 XMLHttpRequest无法加载http://www.google.com/.请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源' null'。
我需要发送数据通过从JavaScript到Python服务器。因为我在使用localhost,所以我需要使用CORS。我正在使用Flask框架及其模块。 作为JavaScript,我有以下几点: 和Python代码: 但是当我执行它时,我会得到这样的信息: XMLHttpRequest无法加载localhost:5000/signin.请求的资源上不存在访问控制允许起源标头。因此,不允许访问源'n
我在区域中有一个S3 bucket,我们称之为。 在那个桶中有一个图片,我们称之为。 如果我通过浏览器访问这两个URL,我就可以检索那个图片(桶中的所有对象都是公共的)(请记住,这些是示例,而不是现实生活中的URL): https://my-bucket.s3.amazonaws.com/some-file.jpg https://s3-eu-west-1.amazonaws.com/my-buc
我打关键斗篷apihttp://localhost:8080/auth/realms/**/协议/openid-connect/令牌与正确的凭据,它的工作正常,但与错误的凭据 当我添加跨域允许时,它会给我印前检查错误 任何人都可以帮我:)PS:使用CORS插件一切正常
问题内容: 我是django的新手,并将其用作创建用户的应用程序的后端。在前端发布用户名的代码是: 在后端,与url相关的功能处理json,但我收到错误消息“请求的资源上没有’Access-Control-Allow-Origin’标头。 问题答案: 你的前端和后端位于不同的端口上,这意味着你的ajax请求受跨源安全性的约束。 你需要设置后端以接受来自不同来源(或只是不同端口号)的请求。
问题内容: 我有一个在服务器上运行的API,并且有一个与之连接的前端客户端来检索数据。我对跨域问题进行了一些研究,并使其起作用。但是我不确定发生了什么变化。我现在在控制台中收到此错误: XMLHttpRequest无法加载https://api.mydomain/api/status。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源“ http