簡體   English   中英

使用C#后端服務器的跨域GET請求在jQuery中不起作用

[英]Cross-domain GET request not working in jQuery, with a C# backend server

我在另一個用作后端服務器(C#)的域上托管了一個單獨的HTTP服務器。 它創建一個TcpListener,並在連接時創建一個新線程來處理該連接。

我使用jQuery向該服務器發出ajax獲取請求,然后jQuery發送了OPTIONS請求。 經過一番研究,我將此段添加到程序中,希望以后可以繼續使用HTTP請求。 (ns是NetworkStream的一個實例,來自TcpClient.GetStream())

if (req1.StartsWith("OPTIONS"))
            {
                //req1 = req1.Split('\n')[0].Substring(9);
                string headers = string.Format(
                    "HTTP/1.0 200 OK\r\n"+
               "Access-Control-Allow-Origin: *\r\n"+
               "Access-Control-Allow-Methods: *\r\n"+
               "Access-Control-Max-Age: 1728000\r\n"+
               "Access-Control-Allow-Headers: *\r\n"+
               "Connection: Keep-Alive\r\n"+
               "Content-Type: text/plain\r\n\r\n");
                ns.Write(Encoding.ASCII.GetBytes(headers), 0, Encoding.ASCII.GetBytes(headers).Length);
                ns.Close(); client.Close();  return;
            }

不幸的是,即使服務器發送回應該使其具有無限訪問權限的Access-Control標頭,瀏覽器仍會繼續向服務器發送OPTIONS請求。

以下是這些請求之一的網絡日志: http : //pastebin.com/T07Whvem

有什么建議可以使這項工作嗎? javascript代碼非常簡單,但我將其包括在內:

//this is just a long-poll
function waitForMsg(){

    $.ajax({
        url: "http://127.0.0.1:6969/2|||ub",
        dataType: "text",

       async: true, 
       cache: true,
        timeout:50000, 

        success: function(data){ 
            addmsg("new", data); 
            setTimeout(
                'waitForMsg()', 
                1000 
            );
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            addmsg("error", textStatus + " (" + errorThrown + ")");
            setTimeout(
                'waitForMsg()', 
                "1000"); 
        },
    });
};

$(document).ready(function(){
    waitForMsg(); /* Start the inital request */
});

我不能使用現有的Web服務器,因為它實際上不是標准的Web服務器。 僅僅是可以通過http接受指令的服務器。

謝謝!

您需要在jQuery中啟用以下設置

$(document).ready(function()
{
    $.support.cors = true;
});

請參閱: http : //api.jquery.com/jQuery.support/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM