跨域问题

1、问题由来

同源策略:不同源(域名、协议、端口)的客户端脚本在没有明确授权的情况下,不能读取对方的资源。

  • 请求资源报错:No ‘Access-Control-Allow-Origin’ header

2、跨域的几种方法

  1. jsonP

    • 利用script(加载资源是get)可以跨域请求
    • 数据在回调函数中拿到
    • 只支持get
  2. form+iframe

    • 这种方式只能提交数据,拿不到返回的数据。
    • form、img标签是不受跨域限制的,可以利用img实现埋点功能
  3. cors(适用场景广)

    1. 后端设置请求头
    2. 浏览器安装cors插件——Allow-Control-Allow-Origin: * 1.0.3
    3. 问题:获取不到服务器自定义的响应头
  4. 代理(nginx或node)

    1. 开发过程中一般使用webpack或node实现代理
    2. nginx也可以实现,但webpack可能更简单。
  5. 关闭浏览器安全模式

  6. postMessage

    • h5新接口,没用过,可以用dom通信,感觉和发布—订阅类似
  7. document.domain

    • 没用过,适合主域名相同,子域名不同的iframe

3、问题:

  1. ajax不能跨域是发送的请求被浏览器拦截,还是回复的响应被浏览器拦截?

    • 答案:响应被拦截

    • 测试环境:Chrome,Flask,原生ajax

    • 测试代码:见下
    • 测试现象:打开浏览器刷新
      • 服务器会有一条访问记录
        这里写图片描述
      • 浏览器有一条请求记录,但response显示NO Data,同时控制台报跨域的错误,使用flask跨域包后,可以正常得到数据。
        这里写图片描述
from flask import Flask
from flask import request
from flask_cors import CORS

app = Flask(__name__)
# CORS(app)   #跨域的库,打开就跨域

@app.route('/')
def hello_world():
    print request
    return 'Hello World!'

if __name__ == '__main__':
    app.run()
loadXMLDoc()
function loadXMLDoc()
{
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            console.log(xmlhttp.responseText)
        }
    }
    xmlhttp.open("GET","http://localhost:5000/",true);
    xmlhttp.send();
}
内容概要:本文档是详尽的 Android SDK 中文帮助文档,介绍了 Android SDK 的核心概念、组件、开发环境搭建、基础开发流程及常用工具使用指南。首先解释了 Android SDK 的定义及其核心价值,即提供标准化开发环境,使开发者能高效构建、测试、优化 Android 应用。接着详细列出了 SDK 的核心组件,包括 Android Studio、SDK Tools、Platform Tools、Build Tools、Android 平台版本和系统镜像。随后,文档提供了详细的环境搭建步骤,适用于 Windows、macOS 和 Linux 系统,并介绍了基础开发流程,以“Hello World”为例展示了从创建项目到运行应用的全过程。此外,还深入讲解了 ADB、AVD Manager 和 SDK Manager 等核心工具的功能和使用方法。最后,文档涵盖了调试与优化工具(如 Logcat、Profiler 和 Layout Inspector)、关键开发技巧(如多版本 SDK 兼容、Jetpack 库的使用和资源文件管理)以及常见问题的解决方案。 适合人群:具有初步编程知识,希望深入了解 Android 应用开发的开发者,尤其是新手开发者和有一定经验但需要系统化学习 Android SDK 的技术人员。 使用场景及目标:①帮助开发者快速搭建 Android 开发环境;②指导开发者完成基础应用开发,理解核心工具的使用;③提高开发效率,掌握调试与优化技巧;④解决常见开发过程中遇到的问题。 阅读建议:此文档内容全面且实用,建议读者按照章节顺序逐步学习,结合实际开发项目进行练习,尤其要注意动手实践环境搭建和基础开发流程,同时参考提供的扩展学习资源,进一步提升开发技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值