热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浏览器是如何知道跨域的,解决浏览器跨域问题

跨域是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。所谓的同源是指,域名、协议、端口均为相同。Cross-Origin


跨域意味着浏览器不能运行其他站点的脚本。 这源于浏览器的同构策略,是浏览器对Javascript实施的安全限制。


同源策略限制了下一步行动: COOKIE、LocalStorage和索引数据库不可读


无法获取DOM和JS对象


无法发送Ajax请求


那么什么是同源呢? 同源是指域名、协议和端口都相同。 如果出现域间问题,控制台将显示以下错误: cross-originrequestblocked : thesameoriginpolicydisallowsreadingtheremoteresourceat http://localhost/users-management/ll


以下是firefox开发者中心关于这个错误的说明,这个说明相当明确。


theresponsetothecorsrequestismissingtherequiredaccess-control-allow-origin header,whichisusedtodeterminewhetherornothethernothethether


If the server is under your control,addtheoriginoftherequestingsitetothesetofdomainspermittedaccessbyaddingittotheaccccess-control


For example,toallowasiteat https://amazing.sitetoaccesstheresourceusingcors,theadershouldbe : access-control-allow-alow


youcanalsoconfigureasitetoallowanysitetoaccessitbyusingthe * wild card.youshouldonlyusethisforpublicapis.privateapishouldnghould andshouldinsteadhaveaspecificdomainordomainsset.in addition,thewildcardonlyworksforrequestsmadewithecrossoriginattributestestion


warning : usingthewildcardtoallowallsitestoaccessaprivateapiisabadidea。


toallowanysitetomakecorsrequestswithoutusingthe * wild card (for example,to enable credentials ), yourservermustreadthevalueoftherequest ' soriginheaderandusethatvaluetosetaccess-control-allow-origin, andmustalsosetavary : originheadertoindicatethatsomeheadersarebeingsetdynamicallydependingontheorigin。


发现问题,设置nginx配置以增加header ' access-control-allow-origin '。 打开nginx配置文件并添加以下节点:


位置~~/users-management/(a-za-z0-9 _-) ) )。


proxy _ set _ headerx-forwarded-for $ remote _ addr;


proxy _ set _ headerx-forwarded-host $ server _ name;


proxy_set_header Host $host;


add _ header ' access-control-allow-origin ' $ http _ origin;


add _ header ' access-control-allow-credentials ' ' true ';


add _ header ' access-control-allow-methods ' ' get,POST,OPTIONS ';


add _ header ' access-control-allow-headers ' ' DNT,X-CustomHeader,Keep-Alive,User-Agent,x -请求


proxy _ pass http://localhost :8081;


}


上述功能将用户管理请求转发到名为后端http://localhost:8081的服务进行处理,并在响应标头中显示上述设置的“访问控制-警报”


这样设定后,域间的问题解决了吗? 用vue.js axios写程序验证一下吧。 结果表明,用户管理相关的GET请求可以正常访问。 但是,开机自检请求报告了上述域间错误。 为什么开机自检请求会出现错误呢? 从网络交互可以看出,在开机自检通信之前,axios会先发送选项请求来Say Hello。 因此,可以在nginx上设置选项,以便在收到选项请求时,也可以将' access-control-allow-添加到响应标头中


具体而言,设置位置~ ^/users-management/(a-za-z0-9 _-) )。


if ($request_method='OPTIONS ' ) {


add _ header ' access-control-allow-origin ' * ';


add _ header ' access-control-allow-methods ' ' get,POST,OPTIONS ';


#


# customheadersandheadersvariousbrowsers * should * beokwithbutaren ' t


#


add _ header ' access-control-allow-headers ' ' DNT,X-CustomHeader,Keep-Alive,User-Agent,x -请求


#


# tellclientthatthispre-flightinfoisvalidfor 20 days


#


add _ header ' access-control-max-age ' 1728000;


add _ header ' content-type ' ' text/plain charset=utf-8 ';


add_header 'Content-Length' 0;


返回204;


}


proxy _ set _ headerx-forwarded-for $ remote _ addr;


proxy _ set _ headerx-forwarded-host $ server _ name;


proxy_set_header Host $host;


add _ header ' access-control-allow-origin ' $ http _ origin;


add _ header ' access-control-allow-credentials ' ' true ';


add _ header ' access-control-allow-methods ' ' get,POST,OPTIONS ';


add _ header ' access-control-allow-headers ' ' DNT,X-CustomHeader,Keep-Alive,User-Agent,x -请求


proxy _ pass http://localhost :8081;


}


设置完成后,您会发现可以从axios成功调用开机自检请求。


推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 理解和应用HTTP请求中的转发与重定向机制
    在HTTP请求处理过程中,客户端发送请求(通常简称为req),服务器进行相应处理后返回响应(通常简称为res)。理解和应用客户端的转发与重定向机制是前端开发的重要内容。这两种机制在Web开发中具有关键作用,能够有效管理和优化用户请求的处理流程。转发机制允许服务器内部将请求传递给另一个资源,而重定向则指示客户端向新的URL发起新的请求,从而实现页面跳转或资源更新。掌握这些技术有助于提升应用的性能和用户体验。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 使用 Vuex 管理表单状态:当输入框失去焦点时自动恢复初始值 ... [详细]
  • 两个条件,组合控制#if($query_string~*modviewthread&t(&extra(.*)))?$)#{#set$itid$1;#rewrite^ ... [详细]
  • 使用Jsoup解析并遍历HTML文档时,该库能够高效地生成一个清晰、规范的解析树,即使源HTML文档存在格式问题。Jsoup具备强大的容错能力,能够处理多种异常情况,如未闭合的标签等,确保解析结果的准确性和完整性。 ... [详细]
author-avatar
骏天天在线
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有