当前位置: 首页 > 面试题库 >

了解基于CORS的XMLHttpRequest(responseText)

慕容明煦
2023-03-14
问题内容

对于一个项目,我正在研究各种HTML5和Javascript元素以及它们周围的安全性,而我现在正努力使自己了解CORS。

根据我的测试,如果我删除..

<?php
 header("Access-Control-Allow-Origin: *"); 
 header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
 ?>

..从试图访问的页面,我在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();
}

提前致谢。


问题答案:

对于“简单”的HTTP动词(例如GET或POST),是的,将获取整个页面,然后浏览器确定JavaScript是否可以使用其内容。服务器不需要知道请求来自何处;它是
浏览器的 工作检查来自服务器的答复,并决定是否JS被允许看到的内容。

对于“非简单”
HTTP动词(例如PUT或DELETE),浏览器使用OPTIONS请求发出“预检请求”。在这种情况下,浏览器首先通过分别检查和来检查是否支持域
动词。(有关更多信息,请参见HTML5 Rocks
的CORS页面上的“ 处理不太简单的请求
。)飞行前响应还列出了允许的非简单标头,包括在中。Access-Control-Allow-Origin``Access-Control-Allow- Methods __Access-Control- Allow-Headers

这是因为即使JavaScript从未看到过跨域结果,允许客户端向服务器发送DELETE请求也可能非常糟糕-
再次提醒您,请记住,服务器通常没有任何义务来验证请求来自合法域(尽管 可以 使用Origin请求中的标头这样做)。



 类似资料:
  • 访问位于“”的XMLHttpRequesthttp://localhost:8080/api/auth/signup“起源”https://mysuite.ru'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:飞行前请求不允许重定向。 通过nginx重定向 使现代化 请求标头: 加载项nginx: 还没有结果

  • 带有Authorization头的请求似乎没有到达Spring Security,因为这个头现在是不允许的。 目前,我扩展WebSecurityConfigurerAdapter以允许所有选项请求。 编辑:问题:如何将Spring Security配置为不需要对选项请求进行身份验证? null

  • CORS策略已阻止CORS从源站对X处XMLHttpRequest的访问:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。 嗨,我正在努力解决我的问题与CORS拒绝我的Vue组件与外部API与axios的交互,因为它返回此错误。我尝试了使用Barryvdh的Cors头支持和制作中间件和自定义路由。这根本行不通。Barryvdh回购中README. md中提到的一切都已经完成,不幸的

  • 问题内容: 这是根据提供的示例验证geoJSON的代码: 我正在尝试使用以下代码进行验证: 在此,我提出实际要求: 我在Chrome控制台中收到此错误: 标题 这是与请求相关的数据: 问题答案: 您不应该将其设置为请求标头,而是响应标头。 您可以从响应中看到服务器将接受哪些请求标头: 错误消息告诉您: 似乎也可能不接受。

  • 我有一个在Node开发的API。JS,打字稿听localhost:3001我有一个Angular的前端应用程序,打字稿听localhost:4200 我正在尝试使用ngx-image-cropper上传图像文件,将其转换为base 64,从前端到API。 当补丁(更新)http请求发送到API时,我得到: 访问位于'http://localhost:3001/member/10'从原点'http:

  • 1. 什么是基础库? 以上是凡泰小程序架构的示意图,最上面是主要的4个场景入口,开发者可以根据自己的业务场景运营这些场景入口,把这些入口的流量充分利用起来。中间框内的是小程序的核心引擎,上面是对开发者提供的基础组件和基础 API 能力,开发者根据这些组件和 API 来开发自己的小程序,满足用户的需求。 小程序前端框架借鉴了主流前端框架Vue的设计思路,从小程序的应用形态,提供了简洁的编程模型,定义