List<String> originList = Arrays.asList(origins.trim().split("( )*,( )*"));
String origin = request.getHeader("Origin");
if (originList.contains(origin)) {
originAllow = origin;
} else {
originAllow = originList.get(0);
}
response.setHeader("Access-Control-Allow-Origin", originAllow);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "PUT, POST, GET, OPTIONS, DELETE, PATCH");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, accept, authorization");
response.setHeader("Access-Control-Expose-Headers", "Location");
在originAllow中,我正在传递我试图访问的url,但我得到以下错误,
XMLHttpRequest cannot load http://<<url>>. Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.
请查找浏览器请求和响应头,响应头
Access-Control-Allow-Headers:x-requested-with, content-type Access-Control-Allow-Methods:GET OPTIONS Access-Control-Allow-Origin:* Access-Control-Max-Age:3600 Allow:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH Connection:close Content-Length:0 Content-Type:text/plain; charset=UTF-8 Server:Apache-Coyote/1.1 X-Application-Context::8080
Request Header Accept:/ Accept-Encoding:gzip, deflate, sdch Accept-Language:en-US,en;q=0.8,ms;q=0.6 Access-Control-Request-Headers:authorization, x-requested-with Access-Control-Request-Method:GET Connection:keep-alive Host:myrestapi-dev Origin:http://localhost:9000 Referer:http://localhost:9000/ User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36选项<>?page=0&search_param=test&size=10,desc HTTP/1.1 主机:myrestapi-dev 连接:keep-alive access-control-request-method: 来源:http://localhost:9000 用户代理:Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,像Gecko一样)Chrome/52.0.2743.116 Safari/537.36 access-control-request-headers:授权,x-requested-with 接受:/ 引用人:http://localhost:9000/ 接受编码:gzip,deflate,sdch 接受语言:en-US,en;q=0.8,ms;q=0.6
请让我知道有什么我需要添加的访问url从ui(角度)的授权,而且它是工作在其他浏览器,但不是在chrome
这是因为您的服务器不允许授权头。要解决这个问题:
response.setHeader("Access-Control-Allow-Headers", "Content-Type, authorization");
应该能帮到你。由于我不确定您的后端,我需要解释更多一点。这是因为由服务器指定它接受跨源请求(并且它允许content-type
请求头)。此外,您需要从同一域进行AJAX调用或进行服务器端更改,以允许来自外部域的请求。为了解决这一问题,您需要在http://yourdomain.com上通过允许外部域在头中进行更改:
Access-Control-Allow-Origin: *
1-ref1
AngularJS$HTTP服务有一个名为“jsonp”的内置方法。
var url = "some REST API Url" + "?callback=JSON_CALLBACK";
$http.jsonp(url)
.success(function(data){
// whatever
});
此外,url必须附加?callback=json_callback。
我将使用JSONP扩展这个解决方案
exampleurl = 'http://wikidata.org/w/api.php?whatever....&format=json'
//Number 1 :
$.ajax({
dataType: "jsonp",
url: exampleurl ,
}).done(function ( data ) {
// do whatever
});
//Number 2 :
$.ajax({
dataType: "json",
url: exampleurl + '&callback=?',
}).done(function ( data ) {
// do whatever
});
//Number 3 :
$.getJSON( exampleurl + '&callback=?', function(data) {
// do whatever
});
问题内容: 哪些浏览器允许跨域ajax调用?我正在设置REST服务,并尝试确定是否需要支持JSONP以允许跨域javascript访问,或者是否足以设置Access-Control-Allow- Origin标头。 问题答案: 这是一个参考,建议在现代浏览器中的支持是合理的(但请参阅此答案末尾的注释),假设客户端代码有意处理IE问题。(IE8和IE9支持CORS,但不支持CORS,而 您必须使用C
问题内容: 为了澄清当我询问浏览器到浏览器的通信时,我的意思是在转发消息之间没有服务器。我想为游戏实现这样的功能。如果无法在websockets中使用p2p,是否有类似的选择?任何帮助表示赞赏。 问题答案: 否。浏览器只能启动WebSockets连接,不能接收它们。在W3C的浏览器API规范只定义了如何启动出站连接。 您可以创建一个既可以启动也可以接受WebSockets连接的应用程序,但是浏览器
问题内容: 专业的网页设计师如何创建跨浏览器的CSS?通常是手动完成,还是像YUI针对JavaScript那样可以简化流程的工具包?我希望远离Dreamweaver之类的所见即所得编辑器。谢谢! 问题答案: 通常是手工完成的。 通常从对比赛场地应用CSS重置开始。 而且,您应该针对符合标准的CSS,然后作为对IE的最后手段,才可以使用hacks(是的,我刚刚说过)。
问题内容: 除了JSONP,为什么要遵循相同的域策略? 问题答案: 出于安全原因,已实施“同源起源策略”;引用维基百科的相关句子: 这种机制对现代Web应用程序具有特殊的意义,因为Web服务器广泛依赖于HTTP cookie来维护经过身份验证的用户会话,因为服务器基于HTTP cookie信息进行操作以揭示敏感信息或执行状态更改操作。 必须在客户端维护不相关站点提供的内容之间的严格分隔,以防止丢失
什么能解释这一点呢?在这种情况下,Edge可能更好,因为我不确定它是否能在Safari中工作。 密码链接!
问题内容: 我正在从Firefox 3.5开始为新服务开发Web应用程序。 界面设计是无表的,仅使用divs + CSS和性能良好的做法。 现在,尽管与Safari兼容仅花费了很少的时间,但IE还是很痛苦。 我的问题是:有什么可以用来加速跨浏览器检查的吗?例如,我已经知道FF和IE之间的许多区别,但是使用特定工具可能会有所帮助。 你能建议一个吗? 谢谢, 猩红 问题答案: 跨浏览器开发 没有工具可