跨域GET请求不能在jQuery中工作,使用c#后端服务器
Cross-domain GET request not working in jQuery, with a C# backend server
我有一个独立的HTTP服务器托管在另一个域,我用它作为我的后端服务器(c#)。它创建一个TcpListener,并在连接时创建一个新线程来处理该连接。
我使用jQuery向这个服务器发送一个ajax get请求,而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;
}
不幸的是,浏览器一直向服务器发送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/
相关文章:
- 是否可以在不使用外部后端的情况下编写grafana数据源插件
- 如何将Angular 2用于各种网站&使用PHP作为后端的模块
- 如何使用python后端和web前端提供braintree客户端令牌
- 与带下划线的后端同步时,转换为 CamelCase 以在 JavaScript 中使用
- 使用 Node 后端设置 webpack 热开发服务器以进行生产
- 如何使用 express.js 和 ember-cli 实现节点.js后端服务器
- 如何使用已经存在的 REST API 后端在 Angular 应用程序中实现登录系统
- 如何在我的服务器上创建javascript,该服务器使用该服务器上的后端,并将在另一个网站上使用
- 将https与在同一主机上运行的解耦的前端和后端MEAN应用程序结合使用
- 我如何使用后端预签名url使用其SDK将文件上传到AmazonS3
- 使用 json 后端对 jquery-mobile 应用程序进行身份验证(制作 API)
- 使用 at.js 将查询参数传递给后端,用于 Twitter 样式提及触发的自动完成
- 使用 Ember.js 从 Laravel 后端加载 Mysql 数据
- 无法在 ExpressJS 中对前端和后端使用多个静态路径
- 使用 POST 方法从后端的 HTML 访问输入标签值
- 如何在使用 Flask 后端时将图像和资产与 HTML 一起使用
- 使用主干作为前端和nodejs作为后端的网站
- 使用适配器和序列化程序将Ember 2.3应用程序连接到WordPress后端,使用版本2 WP REST API
- 当使用Backbone.js时,我必须使用后端吗?
- 如何在ejs脚本部分使用后端变量