nginx服务器配置解决ajax的跨域问题

 更新时间:2017年03月26日 09:55:45   作者:yoyong  
本文给大家分享的是一个nginx服务器配置解决ajax的跨域问题的小技巧,非常的实用,有相同需求的小伙伴可以参考下

在采用jquery ajax调用http请求时,发现了一系列问题:

如采用firebug调试API请求(这个API是自己服务器的应用),看到服务器明明返回200状态,response返回数据也是json格式,但ajax返回的error。

在排除json数据格式不正确的原因之后,发现了ajax error函数返回“networkerror failed to execute ‘send' on ‘xmlhttprequest' failed to load ‘http //“ XMLHttpRequest.status=0,就是没有初始化。

后来才知道是跨域问题(CORS),因为程序调用的是远程服务器的API,服务器不允许跨域调用。如果只是简单的方法,只需要在程序的response添加支持跨域的header添加属性”Access-Control-Allow-Origin: *“即可。如java 服务器代码:

yourownvariable.setHeader("Access-Control-Allow-Origin:", "origin url of your site");

yourownvariable.setHeader("Access-Control-Allow-Methods", "GET, POST,PUT");

如果是配置nginx服务器(如果是其他服务器,可以参考:I want to add CORS support to my server),需要在nginx.conf配置文件添加一下内容:

#
# Wide-open CORS config for nginx
#
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# Custom headers and headers various browsers *should* be OK with but aren't
#
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
#
# Tell client that this pre-flight info is valid for 20 days
#
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
}
}

相关文章

  • nginx地址重定向的方法

    nginx地址重定向的方法

    这篇文章主要介绍了nginx地址重定向的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Nginx请求转发配置指南

    Nginx请求转发配置指南

    Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器,本文档将介绍如何使用 Nginx 配置请求转发,并解释一些常用的配置参数,需要的朋友可以参考下
    2024-10-10
  • 通俗易懂讲解nginx-rtmp-module

    通俗易懂讲解nginx-rtmp-module

    nginx-rtmp-module 是一个用于 Nginx 的第三方模块,它扩展了 Nginx 服务器的功能,使其能够处理实时流媒体数据,本文就来详细的介绍一下nginx-rtmp-module的使用,感兴趣的可以了解一下
    2025-02-02
  • Nginx在Windows下的安装及环境配置(将nginx作为服务运行)

    Nginx在Windows下的安装及环境配置(将nginx作为服务运行)

    这篇文章主要介绍了Nginx在Windows下的安装及环境配置,主要是将nginx作为服务运行,需要的朋友可以参考下
    2018-11-11
  • Nginx中的文件下载服务器详解

    Nginx中的文件下载服务器详解

    利 用Nginx的诸多内置指令可实现自动生成下载文件列表 页、限制下载带宽等功能,这篇文章给大家介绍Nginx中的文件下载服务器功能,感兴趣的朋友一起看看吧
    2024-06-06
  • nginx报错:[emerg] getpwnam(“www“)failed问题及解决

    nginx报错:[emerg] getpwnam(“www“)failed问题及解决

    这篇文章主要介绍了nginx报错:[emerg] getpwnam(“www“)failed问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Nginx 日志改成 JSON 格式的方法

    Nginx 日志改成 JSON 格式的方法

    下面小编就为大家分享一篇Nginx 日志改成 JSON 格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • nginx下配置thinkphp文件的方法

    nginx下配置thinkphp文件的方法

    这篇文章主要介绍了nginx下配置thinkphp文件的方法,需要的朋友可以参考下
    2017-01-01
  • nginx环境下配置ssl加密(单双向认证、部分https)

    nginx环境下配置ssl加密(单双向认证、部分https)

    这篇文章主要介绍了nginx环境下配置ssl加密(单双向认证、部分https),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • nginx并发数限制limit_conn基本语法

    nginx并发数限制limit_conn基本语法

    这篇文章主要为大家介绍了nginx并发数限制limit_conn基本语法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论