栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript Access

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript Access

Access-Control-Allow-Origin
是CORS(跨源资源共享)标头。

当站点A尝试从站点B获取内容时,站点B可以发送

Access-Control-Allow-Origin
响应标头以告知浏览器某些原始来源可以访问此页面的内容。(来源是域,再加上方案和端口号。)默认情况下,其他任何来源都无法访问站点B的页面。使用
Access-Control-Allow-Origin
标头会打开一扇门,可以按特定的请求来源进行跨域访问。

对于站点B希望站点A可以访问的每个资源/页面,站点B应该为其页面提供响应头:

Access-Control-Allow-Origin: http://siteA.com

现代浏览器不会完全阻止跨域请求。如果站点A从站点B请求一个页面,则浏览器实际上将 在网络级别上 获取请求的页面
并检查响应头是否将站点A列为允许的请求者域。如果网站B尚未指示允许网站A访问此页面,则浏览器将触发

XMLHttpRequest
error
事件,并拒绝对请求Javascript代码的响应数据。

非简单请求

什么发生在网络层面可以 略微
比上述解释更加复杂。如果该请求是“非简单”请求,则浏览器首先发送一个无数据的“预检”
OPTIONS请求,以验证服务器将接受该请求。当一个(或两个)同时发生时,请求是不简单的:

  • 使用GET或POST以外的HTTP动词(例如PUT,DELETE)
  • 使用非简单的请求标头;仅有的简单请求标头是:
    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type
      (当它的值是这仅仅是简单的
      application/x-www-form-urlenpred
      multipart/form-data
      text/plain

如果服务器使用与非简单动词和/或非简单头匹配的适当响应头(

Access-Control-Allow-Headers
对于非简单头,
Access-Control-Allow-Methods
对于非简单动词)来响应OPTIONS预检,则浏览器将发送实际请求。

假设站点A要发送的PUT请求

/somePage
,其非简单
Content-Type
值为
application/json
,则浏览器将首先发送预检请求:

OPTIONS /somePage HTTP/1.1Origin: http://siteA.comAccess-Control-Request-Method: PUTAccess-Control-Request-Headers: Content-Type

请注意,

Access-Control-Request-Method
Access-Control-Request-Headers
是由浏览器自动添加的;您无需添加它们。此OPTIONS预检会获取成功的响应标头:

Access-Control-Allow-Origin: http://siteA.comAccess-Control-Allow-Methods: GET, POST, PUTAccess-Control-Allow-Headers: Content-Type

发送实际请求时(完成预检后),其行为与处理简单请求的方式相同。换句话说,将预检成功的非简单请求与简单请求相同(即,服务器仍必须

Access-Control-Allow-Origin
再次发送以获取实际响应)。

浏览器发送实际请求:

PUT /somePage HTTP/1.1Origin: http://siteA.comContent-Type: application/json{ "myRequestContent": "JSON is so great" }

然后服务器发送回

Access-Control-Allow-Origin
,就像一个简单的请求一样:

Access-Control-Allow-Origin: http://siteA.com

有关非简单请求的更多信息



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号