我想了解如何使用CORS,并且对Access-Control-Allow-Credentials头做了什么感到困惑。 文件说 指示凭证标志为true时是否可以显示对请求的响应。 但我不明白什么是“暴露”的意思。 任何人都可以解释这个头被设置为true(与设置为true的凭据标志一起)实际上是什么?
我试图做一个互联网上的服务器(http)之间的ajax调用。 并将其指向我自己的本地主机。 FF / Chrome / ETC …的作品。 这只是一个IE问题。 即时通讯使用IE 11和10。 该请求甚至没有完成。 “拒绝访问”即刻被抛出。 这是代码。 只为你看。 在IE8和IE9中不是经典的HTTP / HTTPS错误。 这是别的,但文档没有帮助。 $jq.ajax({ contentType: 'application/json', url: url, dataType: 'json', crossDomain: true, beforeSend: function (xhr) { xhr.withCredentials = true; xhr.setRequestHeader("Authorization", "Basic " + $jq.base64.encode(username and password)); }, success: function (data, status, headers) {}, error: function (xhr, status, error) {} […]
我正试图理解为什么CORS工作的方式。 正如我从这篇文章中所学到的 ,当www.a.com的网页向www.b.com发出AJAX请求时,决定是否允许请求的是www.b.com 。 但是在这样的模型中,客户端究竟保证了什么? 例如,如果黑客成功将XSS脚本注入到我的页面,那么它向他的域发出一个AJAX请求来存储用户数据。 所以黑客的域名肯定会允许这样的请求。 我以为www.a.com应该决定哪些域允许请求。 所以在理论上,在一个标题访问控制,允许来源我想把整个允许的AJAX CORS请求的域名单。 有人可以解释当前的CORS实现处理什么安全问题吗?
我试图做一个简单的跨源请求,Firefox一直阻止它与此错误: 跨源请求被阻止:相同来源策略不允许读取[url]处的远程资源。 这可以通过将资源移动到相同的域或启用CORS来解决。 [URL] 它在Chrome和Safari中正常工作。 据我可以告诉我已经在我的PHP上设置所有正确的标题,以允许这个工作。 这是我的服务器正在响应 HTTP/1.1 200 OK Date: Mon, 23 Jun 2014 17:15:20 GMT Server: Apache/2.2.22 (Debian) X-Powered-By: PHP/5.4.4-14+deb7u8 Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, OPTIONS Access-Control-Allow-Headers: Content-Type Access-Control-Request-Headers: X-Requested-With, accept, content-type Vary: Accept-Encoding Content-Length: 186 Content-Type: text/html 我试过使用Angular,JQuery和一个基本的XMLHTTPRequest对象,就像这样: var data = "id=1234" var request = new XMLHttpRequest({mozSystem: true}) request.onload = onSuccess; request.open('GET', […]
我在客户端使用AngularJS $ http访问服务器端的ASP.NET Web API应用程序的端点。 由于客户端与服务器位于不同的域,因此我需要CORS。 它适用于$ http.post(url,数据)。 但只要我authentication用户,并通过$ http.get(url)发出请求,我收到消息 “Access-Control-Allow-Origin”头包含多个值“http://127.0.0.1:9000,http://127.0.0.1:9000”,但只允许有一个值。 原因'http://127.0.0.1:9000'因此不被允许访问。 提琴手向我展示,在获得成功的选项请求后,确实有两个标题条目。 什么和我在哪里做错了什么? 更新 当我使用jQuery $ .get而不是$ http.get时,出现相同的错误信息。 所以这对于AngularJS来说似乎没有问题。 但是哪里错了?
我正在尝试执行一个跨域POST请求到ASP.NET MVC控制器操作。 这个控制器动作接受并使用各种参数。 问题是,当预检请求发生时,控制器动作实际上试图执行&因为OPTIONS请求不传递任何数据,控制器动作抛出一个500 HTTP错误。 如果我删除使用该参数的代码或参数本身,则整个请求链将成功完成。 这是如何实现的一个例子: 控制器行动 public ActionResult GetData(string data) { return new JsonResult { Data = data.ToUpper(), JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } 客户端代码 <script type="text/javascript"> $(function () { $("#button-request").click(function () { var ajaxConfig = { dataType: "json", url: "http://localhost:8100/host/getdata", contentType: 'application/json', data: JSON.stringify({ data: "A string of data" }), type: "POST", success: […]
我尝试使用Resteasy 3.0.9中提供的新CorsFilter 。 我在本页面的底部find了一个示例: 使用JAX-RS / RESTEasy实现CORS的Ajax请求 如果我在Application子类的方法getSingletons()定义了这个filter,那么我的资源就不会被扫描了。 这意味着没有资源将被发现,并发生以下错误: javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures 在接下来的页面上,我发现了一个描述: javax.ws.rs.NotFoundException:找不到完整path的资源错误发生 但基本上,这个部署选项的作用是扫描应用程序的注解@Path,@Provider等。 原因是JAX-RS将首先分别在重写的getClasses()和getSingletons()中查找类和对象。 如果返回空集,则告诉JAX-RS进行扫描(按照规范)。 因此,如果我覆盖getSingletons()方法,JAX-RS不会执行扫描吗? 是否有另一种方式来configuration此CorsFilter并启用资源扫描?
对于一个项目,我正在寻找各种各样的HTML5和Javascript元素以及围绕它们的安全性,而我正试图让我的头脑刚好在CORS的周围。 根据我的testing,如果我删除.. <?php header("Access-Control-Allow-Origin: *"); header('Access-Control-Allow-Methods: GET, POST, OPTIONS'); ?> ..从试图访问的页面我看到在控制台login在Chrome中的以下内容: XMLHttpRequest cannot load http://www.bla.com/index.php. Origin http://bla2.com is not allowed by Access-Control-Allow-Origin. 我明白这是正确的,但是Wireshark在返回时显示HTTP / 1.1 200 OK,并且在数据中显示被请求的页面的来源。 那么是不是浏览器和JavaScript阻止了responseText被实际使用,即使它实际上被转移了? 代码如下: function makeXMLRequest() { xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState==4) { alert(xmlhttp.responseText); } } xmlhttp.open("GET","http://www.bla.com/index.php",true); xmlhttp.send(); } 提前致谢。
我正在尝试使CORS请求从domain.com POST到a.domain.com。 我的JavaScript看起来像这样 $('#fileupload').fileupload({ xhrFields: { withCredentials: true }, dataType: 'json', url: $('#fileupload').data('path'), singleFileUploads: true, add: function(e, data){ data.submit(); } }); 起初,我看到OPTIONS路线被这样调用: Request URL: https://a.domain.com/some/route Request Method:OPTIONS Status Code:200 OK 选项要求: Access-Control-Request-Headers:origin, content-type, accept Access-Control-Request-Method:POST Host:a.domain.com Origin:http://domain.com:3000 Referer:http://domain.com:3000/home 选项响应 Access-Control-Allow-Credentials:true Access-Control-Allow-Methods:POST Access-Control-Allow-Origin:http://domain.com:3000 Connection:keep-alive Content-Length:0 Content-Type:text/html;charset=utf-8 这个要求回来了200像说的。 在我的服务器上,我有与POST方法相同的路由,这是我得到的OPTIONS后的回报 Request URL:https://a.domain.com/some/route 发布请求 Content-Type:multipart/form-data; boundary=—-WebKitFormBoundaryjwr5Pk7WBcfzMdbO Origin:http://domain.com:3000 Referer:http://domain.com:3000/home POST请求被取消/失败。 […]
有没有人设法将Access-Control-Allow-Origin到响应头文件中? 我需要的是这样的: <img src="../../../tours/8b16734d-336c-48c7-95c4-3a93fa023a57/1_AU_COM_180212_Areitbahn_Hahnkoplift_Bergstation.tiles/l2_f_0101.jpg" /> 这个获取请求应该包含在响应头中, Access-Control-Allow-Origin: * 我的桶的CORS设置如下所示: <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration> 正如你所期望的那样,没有Origin响应头。