即使我在服务响应中附加了以下提供的 CORS标头 :
resp.setContentType("application/json");
resp.addHeader("Access-Control-Allow-Origin", "*");
resp.addHeader("Access-Control-Allow-Credentials", "true");
resp.addHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
resp.addHeader("Access-Control-Allow-Headers", "Origin,accept,content-type");
resp.flushBuffer();
尝试通过AngularJS前端访问服务中的某些 POST Web方法时,控制台中仍然出现错误。
XMLHttpRequest cannot load http://192.***.*.***:8080/abc/def/search/vehicleManufacturer. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.***.*.***:8085' is therefore not allowed access.
但是,在同一类中,一些没有任何有效负载的 POST 方法都可以完美地响应。有什么建议 ?
编辑--------->
下面是我的AngularJS客户端屏幕代码,用于调用Web方法:-
getVehicleModel : function(searchData,$scope){
$http({
method:'POST',
url:'http://192.169.*.***:8085/abc/def/search/vehicleModel',
dataType:'jsonp',
data:searchData
}).
success(function(data){
console.log("vehicle model")
$scope.vehicleModel = data.Response;
});
},
我认为这里的问题是CORS中的预检请求。
从Mozilla文档中,
与简单请求(如上所述)不同,“预检”请求首先通过OPTIONS方法向另一个域上的资源发送HTTP请求,以确定实际请求是否可以安全发送。跨站点请求这样被预检,因为它们可能会影响用户数据。特别是在以下情况下,请求将被预检:
它使用GET,HEAD或POST以外的方法。另外,如果使用POST发送的Content-Type以外的请求数据
- application / x-www-form-urlencoded,
- 多部分/表单数据
- 文字/纯文字
例如,如果POST请求使用application / xml或text / xml将XML有效负载发送到服务器,则该请求被预检。
- 它在请求中设置自定义标头(例如,请求使用标头,例如X-PINGOTHER)
如上所述,即使您进行的是简单的POST请求,请求中的Content-Type
application/json
还是不同于上述3种类型,因此它被视为预检请求,并且在实际POST之前会触发OPTIONS请求请求。
您可以通过doOptions
在servlet中实现来解决此问题,只需在其中添加标头即可使用:)
跨域资源共享 (CORS) 跨域资源共享(Cross-Origin Resource Sharing)允许WEB端的应用程序访问不属于本域的资源 配置格式 CORS配置为json字符串,类似 { "rules":[ { "id":"id1" "AllowOrigin":"http://*.example.com" //指定允许发送跨源请求的源,支持使用通配符
出于某种原因,字体已经停止在我的网站上呈现。字体存储在本地,与站点相同的服务器上。 例如,右上方的电话号码应该是Bebas字体,但它默认为影响。 在控制台中,我得到错误: 来源“http://www.cyclistinsuranceaustralia.com.au”的字体已被跨来源资源共享策略阻止加载:“Access-Control-Allow-Origin”标头的值“http://www.cyc
问题内容: 我对跨域JavaScript的概念有疑问。 有一个服务器(ex amazon.com),在其中只有选定的域可以使用其Web服务。所以可以肯定,如果我尝试从本地使用他们的服务,我将无法。我在控制台上得到了这个 跨域请求被阻止:“同源起源”策略禁止读取http://football20.myfantasyleague.com/2014/export?TYPE=rosters&L=52761
通过XHR 实现Ajax 通信的一个主要限制,来源于跨域安全策略。默认情况下,XHR 对象只能访问与包含它的页面位于同一个域中的资源。这种安全策略可以预防某些恶意行为。但是,实现合理的跨域请求对开发某些浏览器应用程序也是至关重要的。 CORS(Cross-Origin Resource Sharing,跨源资源共享)是W3C 的一个工作草案,定义了在必须访问跨源资源时,浏览器与服务器应该如何沟通。
问题内容: 对于以下发布请求如何使用烧瓶中从ajax发布的数据?: 我收到一个错误: 我尝试通过以下两种方式解决该问题,但似乎无济于事。 使用Flask-CORS 这是用于处理的扩展,应使跨域AJAX成为可能。 我的 pythonServer.py 使用此解决方案: 使用特定的Flask装饰器 这是Flask 官方 代码片段,定义了一个装饰器,该装饰器应允许其装饰功能。 http://flask.
编辑2:我已经找到了一个可行的解决方案,但没有真正理解它的作用。如果有人能提供关于配置的更详细的解释,以及在亚马逊对配置的解释中所发生的背景魔法,那将是非常感谢的,就像nzifnab提供的赏金一样。