IView Upload 跨域问题解决方法

yufei       4 年, 9 月 前       1071

IView 使用过程中如果发生了跨域问题。如果你的上传域名和 html 文件不是同一个域名,解决方法如下:

  1. 配置路径的 nginx 添加跨域

        location /x/ {
    
                add_header 'Access-Control-Allow-Origin' "$http_origin" always;
                add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,OPTIONS' always;
                add_header 'Access-Control-Allow-Headers' 'X-CSRF-Token, X-XSRF-Token, X-Requested-With, Content-Type, Ticket, Accept, Authorization' always;
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Access-Control-Allow-Credentials' 'true';
    
        if ($request_method = 'OPTIONS') { 
                return 200;
        }
    

    一定要 return 200 不是网上的什么 204XMLHTTPRequest 原生对非 200 都是错误处理的。

  2. 前端使用 xmlhttprequest 页面刚开始的时候先发起一个 options 请求

    new Promise((resolve, reject) => {
      var xhr = new XMLHttpRequest();
      const url = 'https://file.datebox.cc/x/upload/';  
      xhr.open('OPTIONS', url, true);
      xhr.onreadystatechange = function() {
          if (xhr.readyState == 4) {
              console.log(xhr.responseText);
          }
      };
      xhr.send();
    });
    

    经过实际经验 2 其实可以不用的。

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.