IView 使用过程中如果发生了跨域问题。如果你的上传域名和 html 文件不是同一个域名,解决方法如下:
-
配置路径的 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
不是网上的什么204
。XMLHTTPRequest
原生对非200
都是错误处理的。 -
前端使用
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 其实可以不用的。
目前尚无回复