美文网首页
nginx代理解决api跨域问题,在线测试

nginx代理解决api跨域问题,在线测试

作者: 小马将过河 | 来源:发表于2021-04-06 22:52 被阅读0次

今天部署野火IMserver端,部署好了以后一直用ip+port测试接口的,测试没问题以后交给前端去使用。

没想到反馈来的第一个问题居然是接口报跨域错误,想想也是,一般程序里也不会考虑这么全,给你把啥都搞好了。

也许应该在接口层自己写filter或者加cros的注解一类的,但是我不熟悉项目的架构,加上时间紧迫,我就采取了nginx转发,在nginx做跨域配置的方案。虽然文章一大篇,但是还是自己给自己做一个笔记吧。

nginx代理配置

在nginx中增加以下配置,代理原来的ip+端口访问的api

server {
    listen 80;
    server_name imtest.xxx.com;

    location / {
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:18080/;
        client_max_body_size 100m;

        #   指定允许跨域的方法,*代表所有
        add_header Access-Control-Allow-Methods *;

        #   预检命令的缓存,如果不缓存每次会发送两次请求
        add_header Access-Control-Max-Age 3600;
        #   带cookie请求需要加上这个字段,并设置为true
        add_header Access-Control-Allow-Credentials true;

        #   表示允许这个域跨域调用(客户端发送请求的域名和端口)
        #   $http_origin动态获取请求客户端请求的域   不用*的原因是带cookie的请求不支持*号
        add_header Access-Control-Allow-Origin $http_origin;

        #   表示请求头的字段 动态获取
        add_header Access-Control-Allow-Headers
        $http_access_control_request_headers;

        #   OPTIONS预检命令,预检命令通过时才发送请求
        #   检查请求的类型是不是预检命令
        if ($request_method = OPTIONS){
            return 200;
        }

    }

}

在线测试

浏览器打开一个空白的tab,打开开发者模式,在console中,一次性copy以下代码,回车。进行测试

  • get请求
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.xxx.com/api/action?page=1&size=10"');
xhr.send(null);
// xhr.send({ form: 'data' });
xhr.onload = function(e) {
 // 请求结束后,在此处写处理代码
    var xhr = e.target;
    console.log(xhr.responseText);
}

get请求测试
  • post请求
var params = {
  "password": "Test,123",
  "username": "A0026212"
};
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://testplattestapi.cosmoplat.com/cosmo/public/v1/admin/auth/token');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(params));
xhr.onload = function(e) {
 // 请求结束后,在此处写处理代码
    var xhr = e.target;
    console.log(xhr.responseText);
}
post接口测试

原文

nginx解决跨域问题

相关文章

  • vue cli 解决跨域 线上 nginx 反向代理配置

    vue cli 解决跨域 线上 nginx 反向代理配置 前后分离 axios 接 api 跨域问题如图: 解决办...

  • 60.webpack中的proxyTable

    proxyTable是解决开发环境中的跨域问题,正式环境的跨域需要使用nginx反向代理或者是后端解决 '/api...

  • nginx代理解决api跨域问题,在线测试

    今天部署野火IM[https://github.com/wildfirechat]的server端[https:/...

  • 跨域问题,解决方案

    跨域问题,解决方案 - Nginx反向代理跨域问题,解决方案 - CORS方案此为原作者的链接:跨域问题,解决之道

  • 用nginx的反向代理机制解决前端跨域问题

    用nginx的反向代理机制解决前端跨域问题 Vue做前台,后台走接口就会遇到跨域问题。这里Nginx做反向代理是一...

  • webpack设置代理出现的问题

    一、解决跨域问题有几种解决方案:跨域资源共享 CORSjsonpproxy (Nginx代理或其他的服务器代理)在...

  • ajax跨域--nginx反向代理

    用nginx反向代理实现跨域,是最简单的跨域方式。只需要修改nginx的配置即可解决跨域问题,支持所有浏览器,支持...

  • webpack代理

    webpack设置代理,用于解决跨域问题一个访问https api前端地址https://api.xtits.cn...

  • nginx 配置

    1、nginx访问配置 2、代理本地3000端口到3066端口 3、代理网络端口和本地端口到3066解决跨域问题 ...

  • Koa代理Http请求

    Koa 代理http请求,解决跨域问题 1、为什么用Koa做跨域代理? "最初为了解决跨域问题,我把站点部署到了n...

网友评论

      本文标题:nginx代理解决api跨域问题,在线测试

      本文链接:https://www.haomeiwen.com/subject/lcnekltx.html