nginx服务器通过配置来解决API的跨域问题

发布时间 - 2026-01-11 01:20:40    点击率:

前言

最近在采用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';
}
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# java  # api  # nginx服务器  # nginx跨域配置  # nginx  # api服务器  # Nginx跨域使用字体文件的配置方法  # nginx服务器配置解决ajax的跨域问题  # Nginx配置跨域请求Access-Control-Allow-Origin * 详解  # nginx 配置跨域失效修复的方法示例  # 通过Nginx代理转发配置实现跨域的方法(API代理转发)  # nginx配置解决跨域访问的方法详解  # ubuntu nginx安装及服务配置跨域问题处理方式  # Nginx 跨域配置的具体实现  # Nginx 配置跨域的实现及常见问题解决  # 的是  # 发现了  # 只需  # 要在  # 才知道  # 这篇文章  # 谢谢大家  # 不正确  # 配置文件  # 数据格式  # 有疑问  # header  # code  # 是跨域  # status  # CORS  # Access  # yourownvariable  # plain  # setHeader 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: linux top下的 minerd 木马清除方法  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  EditPlus中的正则表达式实战(6)  重庆市网站制作公司,重庆招聘网站哪个好?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何快速搭建高效服务器建站系统?  Laravel distinct去重查询_Laravel Eloquent去重方法  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  制作电商网页,电商供应链怎么做?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  如何在云指建站中生成FTP站点?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  如何在企业微信快速生成手机电脑官网?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  魔方云NAT建站如何实现端口转发?  如何快速搭建安全的FTP站点?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  如何在新浪SAE免费搭建个人博客?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  使用spring连接及操作mongodb3.0实例  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  如何快速搭建高效香港服务器网站?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  如何在宝塔面板中创建新站点?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何在万网利用已有域名快速建站?  如何在阿里云域名上完成建站全流程?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  *服务器网站为何频现安全漏洞?  网站制作企业,网站的banner和导航栏是指什么?  在线制作视频的网站有哪些,电脑如何制作视频短片?  Python进程池调度策略_任务分发说明【指导】  详解Huffman编码算法之Java实现  敲碗10年!Mac系列传将迎来「触控与联网」双革新  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel模型事件有哪些_Laravel Model Event生命周期详解  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  html如何与html链接_实现多个HTML页面互相链接【互相】