自学内容网 自学内容网

解决跨域问题的方法

1.跨域问题的判断

如果我们可以修改服务器配置:

CORS

JSON

如果不能我们有两种跨域解决方案:

代理服务器:

1.CORS:

CORS策略包括以下几个关键点:

  1. 简单请求:如果请求满足以下条件,浏览器会直接发送请求,不会预检:

    • 使用GET、HEAD或POST方法。
    • 除了AcceptAccept-LanguageContent-LanguageContent-Type之外,没有自定义的HTTP头部。
    • Content-Type头部的值仅限于text/plainmultipart/form-dataapplication/x-www-form-urlencoded
  2. 预检请求:如果请求不满足简单请求的条件,浏览器会先发送一个预检请求,询问服务器是否允许跨域请求。

  3. 携带凭证:默认情况下,跨域请求不会发送凭证(如cookies、HTTP认证等)。如果需要发送凭证,请求需要设置withCredentials属性为true

  4. 服务器配置:服务器需要在响应头中设置Access-Control-Allow-Origin和其他CORS相关的头部,以允许或限制跨域请求。

  5. CORS策略的实施:CORS策略由浏览器实施,服务器端也需要正确配置以支持跨域请求。

CORS是Web安全的重要组成部分,它帮助保护了网站免受潜在的跨站请求伪造(CSRF)攻击。

 注意:只要不动请求头都是一般请求,只要我们对请求头进行了修改后一般都会不满足规范,这会变成复杂请求。

2.JSONP:

  1. 创建 <script> 标签:客户端(通常是 JavaScript)创建一个 <script> 标签,并将其 src 属性设置为指向跨域数据源的 URL。

  2. 传递回调函数:在 URL 中,客户端会传递一个查询参数(通常是 callback),该参数的值是客户端已经定义好的一个回调函数的名称。

  3. 服务器响应:服务器接收到请求后,返回的数据会被包裹在回调函数中,形成一个 JSONP 响应。

  4. 执行回调函数:客户端接收到响应后,由于响应是一个 <script> 标签,浏览器会执行其中的 JavaScript 代码,即调用回调函数,并将服务器返回的数据作为参数传递给该函数。

3.代理服务器:

因为跨域问题是存在于浏览器向服务器请求地址不一致出现的问题,问题发生在浏览器。

我们可以通过自己创建一个代理访问进行代理访问,因为是自己创建的服务器。我们可以很方便的解决跨域问题(CORS,JSON)方案。

然后代理服务器转发真实的请求,因为服务器与服务器之间的请求是不会触发跨域问题。我们可以正常拿到请求数据。


原文地址:https://blog.csdn.net/ededabo/article/details/143660140

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!