首页- 站长资讯 技术文章  Nginx配置跨域请求报错Access-Control-Allow-Origin * 怎么解决

Nginx配置跨域请求报错Access-Control-Allow-Origin * 怎么解决

 0  15小时前

当出现403跨域错误的时候 no 'access-control-allow-origin' header is present on the requested resource,需要给nginx服务器配置响应的header参数:

一、 解决方案

只需要在nginx的配置文件中配置以下参数:

  1. location / { 
  2.  add_header access-control-allow-origin *;
  3.  add_header access-control-allow-methods 'get, post, options';
  4.  add_header access-control-allow-headers 'dnt,x-mx-reqtoken,keep-alive,user-agent,x-requested-with,if-modified-since,cache-control,content-type,authorization';
  5.  
  6.  if ($request_method = 'options') {
  7.   return 204;
  8.  }
  9. }

上面配置代码即可解决问题了,不想深入研究的,看到这里就可以啦=-=

 

二、 解释

1. access-control-allow-origin

服务器默认是不被允许跨域的。给nginx服务器配置`access-control-allow-origin *`后,表示服务器可以接受所有的请求源(origin),即接受所有跨域的请求。

2. access-control-allow-headers 是为了防止出现以下错误:

request header field content-type is not allowed by access-control-allow-headers in preflight response.

这个错误表示当前请求content-type的值不被支持。其实是我们发起了"application/json"的类型请求导致的。这里涉及到一个概念:预检请求(preflight request),请看下面"预检请求"的介绍。

3. access-control-allow-methods 是为了防止出现以下错误:

content-type is not allowed by access-control-allow-headers in preflight response.

4.给options 添加 204的返回,是为了处理在发送post请求时nginx依然拒绝访问的错误

发送"预检请求"时,需要用到方法 options ,所以服务器需要允许该方法。

三、 预检请求(preflight request)

其实上面的配置涉及到了一个w3c标准:cros,全称是跨域资源共享 (cross-origin resource sharing),它的提出就是为了解决跨域请求的。

跨域资源共享(cors)标准新增了一组 http 首部字段,允许服务器声明哪些源站有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的http 请求方法(特别是 get 以外的 http 请求,或者搭配某些 mime 类型的 post 请求),浏览器必须首先使用 options 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 http 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 cookies 和 http 认证相关数据)。

其实content-type字段的类型为application/json的请求就是上面所说的搭配某些 mime 类型的 post 请求,cors规定,content-type不属于以下mime类型的,都属于预检请求:

application/x-www-form-urlencoded
multipart/form-data
text/plain

所以 application/json的请求 会在正式通信之前,增加一次"预检"请求,这次"预检"请求会带上头部信息 access-control-request-headers: content-type:

  1. options /api/test http/1.1
  2. origin: http://foo.example
  3. access-control-request-method: post
  4. access-control-request-headers: content-type
  5. ... 省略了一些

服务器回应时,返回的头部信息如果不包含access-control-allow-headers: content-type则表示不接受非默认的的content-type。即出现以下错误:

request header field content-type is not allowed by access-control-allow-headers in preflight response.

相关说明:

1、VIP会员无限制任意下载,免积分。 立即前往开通>>

2、本站资源大多存储在云盘,如出现链接失效请评论反馈。

3、本站提供的源码、模板、软件工具等其他资源,均不包含技术服务,请大家谅解!资源仅供参考学习只用,请勿用于任何商业用途,请支持正版。

4、源码、模板等资源会随着技术、坏境的升级而存在部分问题,还请慎重选择。


本文网址:http://www.zzdaima.com/art/36.html
转载请声明来自: 站长代码- Nginx配置跨域请求报错Access-Control-Allow-Origin * 怎么解决

教程搜索
热门技术文章
  • 关于域名历史的查询和处理

    关于域名历史的查询和处理

    一、域名历史是什么意思?域名历史,是指域名首次注册的时间、域名持有者更新、域名网站所属行业变更、域名是否被降权或K站、域名历史PR值、域名历史的外链建设情况、域名年龄等等。二、域名历史对SEO有影响因素马慧SEO简单列出几点域名历史对网站优化的影响:①域名历史是否

  • 网站建设这些东西我们需要设置好

    网站建设这些东西我们需要设置好

    一、建站的需求及目的建站的目的时什么,需求又是什么,依据自己的需求及行业的对比,大概做出一个小的预算。通常情况下,若作为单一的企业网站,建站费用不高,若需要定制开发的话,定制开发所需要的费用肯定比一般的企业网站要高,网站定制开发流程:沟通确定需求-出设计效

  • 可能被我们忽视的影响排名因素

    可能被我们忽视的影响排名因素

    一、质量高的原创内容在这个越来越注重内容的时代,各位站长要想在百度、360等搜索引擎获得不菲的流量,那必须注重网站内容的原创性。独特的实质性的并且是高质量的原创内容,极大的影响着网站的收录和排名。现下正火热的熊掌号就是百度针对原创内容的一次尝试,高质量的原创

  • 寻找合适的关键词给网站创收

    寻找合适的关键词给网站创收

    选择垂直行业领域关键词大家在选择关键词的时候,记住一定不能太宽泛,因为我们是个人站长,不可能投入那么多的人力物力去经营一个有大量内容的网站,如果网站主体太广,我们是根本没有精力去管理的,那么排名自然也是无法上来的,这里如风SEO强烈建议大家一定要找准一个垂直

  • 怎么样才能写出打动读者的文案

    怎么样才能写出打动读者的文案

    第一,标题要准确简洁一篇高质量的文章内容,首先必须要有一个简洁明确的题目标题,能够让读者一下就可以抓住你要表达的文章意思。而有些SEO优化人员,为了图省事,往往采用采集文章的方式更新内容,但又考虑到雷同性太高,于是就随便更换一个文章标题了事。这样做的后果就是

  • 看看这些方法是否能提升网站排名

    看看这些方法是否能提升网站排名

    1、内容创造打造优质原创内容,是一个老生常谈的话题,几乎已经听腻了,可什么才是原创且优质的内容,我们主要参考如下内容:①内容来源:来自特定关键词,搜索结果中TOP10的参考资料,我们知道任何一篇文章对于搜索引擎而言,都是词组组成。当你在审查排名前10的内容时,我们

热门推荐

关于我们 联系我们 免责声明 共享规则 SiteMap 站长代码所有作品均为会员提供或网上搜集,版权归原作者所有,如需商业用途或转载请与原作者联系

Copyright © 2023  站长代码版权所有 辽ICP备2021012267号-1 辽公网安备 21012202000096号 所提供的内容仅供观摩学习交流之用,请勿用作商业用途!如有侵权,请及时 联系我们删除

第三方账号一键登录