ajax跨域擷取傳回值---上傳檔案(nginx,ajax)

來源:互聯網
上載者:User

跨域說通俗點就是在A網中使用ajax去擷取B網站的特定內容,這個就是跨域。跨域有兩種形式,一種是同一ip不同連接埠的跨域,一種是不同ip的跨域。

現在說說項目中用到的解決跨域檔案上傳的方法,中間遇到的各種坑就不說了;該上傳方法適用上述兩種情形。

注意該架構用的是nginx作為web伺服器。

前端html<form id="fp" action="" method="post" enctype="multipart/form-data">                                <table >                                   <tr>                                                                     <td width="100" align="left"><input  type="file" name="file" id="file" /></td>                                    <td width="100"  align="left"><input id="sub"  style="background-color:#669900;" onclick="ajaxUp()" type="button" name="submit" value="上傳" />                                  </tr>                                 </table>                                </form>

//ajaxfunction ajaxUp(){var formElement = document.forms.namedItem("fp");   var xhr = new XMLHttpRequest();   xhr.open("POST", upHttp, true);    xhr.send(new FormData(formElement));    xhr.onload = function(e){var messg = eval('(' + this.response + ')');cookies(messg.id);location.reload();}}

nginx配置#user  www www;worker_processes  1;  #啟動進程,通常設定成和cpu的數量相等worker_rlimit_nofile 204800;events {    use epoll;   #epoll是多工IO(I/O Multiplexing)中的一種方式,但是僅用於linux2.6以上核心,可以大大提高nginx的效能    worker_connections  100;    #單個後台worker process進程的最大並發連結數}http {    access_log    /opt/v0.1/wordFreServer/ngx_openresty/logs/access_appname.log  combined;    error_log   /opt/v0.1/wordFreServer/ngx_openresty/logs/error_appname.log   crit;    include       mime.types;   #設定mime類型,類型由mime.type檔案定義    default_type  application/octet-stream;    #sendfile 指令指定 nginx 是否調用 sendfile 函數(zero copy 方式)來輸出檔案,對於普通應用,    #必須設為 on,如果用來進行下載等應用磁碟IO重負載應用,可設定為 off,以平衡磁碟與網路I/O處理速度,降低系統的uptime.    sendfile       on;       tcp_nopush     on;    tcp_nodelay    on;    keepalive_timeout  60;   #連線逾時時間    client_header_buffer_size 2k;  #設定請求緩衝    lua_shared_dict config 1m;    #init_by_lua_file 'server/init.lua';    server{             listen 8000;             server_name  localhost;             location ~* /(\w+)/static/ {             root /opt/v0.1/wordFreServer/ngx_openresty/web2py/applications/;             }      location / {            uwsgi_pass      127.0.0.1:9001;            include         uwsgi_params;                  }    }    server     {        listen       7777;#偵聽連接埠        server_name  localhost;lua_code_cache on;#上線後請設定為onclient_max_body_size 512m;location /favicon.ico { log_not_found off; access_log off; }location /wordFreq/upFile {if ($request_method = 'POST'){add_header 'Access-Control-Allow-Origin' '*';#set $debug "on"; content_by_lua_file server/upFile.lua; }}location /wordFreq/act {add_header 'Access-Control-Allow-Origin' '*'; set $debug "on"; content_by_lua_file server/act.lua; }location /test { default_type text/html; content_by_lua 'ngx.say("hello world")';}location ~* ^(.+\.txt)$ {  add_header 'Access-Control-Allow-Origin' '*';root         /opt/v0.1/wordFreServer/result;  access_log   off;  expires      30d;  add_header Content-Disposition "attachment; filename=$1";}   }
在服務端的為某個請求服務添加  add_header 'Access-Control-Allow-Origin' '*';  就能實現跨越,並且能夠獲得response,也不會出現警告資訊。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.