标签: xmlhttprequest

区分AJAX呼叫/浏览器请求

HTTP请求的标头中是否有任何内容可以区分AJAX调用和来自给定客户端的直接浏览器请求?用户代理字符串通常是否相同?

javascript ajax xmlhttprequest http-headers

13
推荐指数
1
解决办法
5180
查看次数

我在哪里可以找到XMLHttpRequest实现?

我想了解XMLHttpRequest如何在Javascript中工作的低级细节,但是我没有幸运地在Rhino或V8代码中找到实现代码.我对这两个项目中的代码都不熟悉,所以我可能不会找到合适的位置.

在任何地方都有可用的开源实现吗?

javascript v8 xmlhttprequest rhino

13
推荐指数
1
解决办法
5504
查看次数

使用XmlHttpRequest发送文件:Streaming?

我试图通过拖放上传大文件.我有这段Javascript代码:

xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('X-File-Name', file.name);
xhr.setRequestHeader('X-File-Size', file.size);
xhr.setRequestHeader('Content-Type', file.type);
xhr.send(file);
Run Code Online (Sandbox Code Playgroud)

where url是一个目标url的字符串,file是一个文件拖放后检索Blob到的(根据http://www.w3.org/TR/XMLHttpRequest2/#the-send-method).此代码适用于Chrome 12,Safari 5和Firefox 4,并在HTTP请求正文中发送文件的原始内容.

但是,如果文件足够大,则永远不会发送请求.相反,XMLHttpRequest对象触发和错误事件(没有任何有用的消息).在我的环境中,此限制为86Mb,但因机器而异.

Chrome的javascript控制台显示以下消息:

POST http://localhost/xfiles/xfiles.php undefined (undefined)
Run Code Online (Sandbox Code Playgroud)

这与我的代码无关(与较小的文件完美配合).

浏览器似乎在内存中并在发送之前读取整个文件.可能有一个内存不足的异常或类似的东西会停止进程.在任何情况下,都没有发送HTTP请求,因此可以肯定服务器的限制与此问题无关.

无论如何,阅读整个文件是浪费资源.

是否有任何方法以流方式逐字节发送文件,而不必先将其存储在内存中?

javascript streaming upload xmlhttprequest

13
推荐指数
2
解决办法
1万
查看次数

Chrome扩展上的Access-Control-Allow-Origin

我正在制作一个Chrome扩展程序,用于从我自己的服务器中提取数据.它一次使用大约4个httpRequests,但有时我会得到如下控制台错误:

XMLHttpRequest cannot load http://apps.radionsm.lv/apps/system/index.php?request=now. Origin chrome-extension://egkddfmbidfobhchndockbhjancbpfkd is not allowed by Access-Control-Allow-Origin. 对于每个人有时没有.

如果我发送header('Access-Control-Allow-Origin: *');将修复它吗?

php xmlhttprequest google-chrome-extension

13
推荐指数
3
解决办法
3万
查看次数

为什么XMLHttpRequest ProgressEvent.lengthComputable可能为false?

我正在尝试使用XMLHttpRequest 2级支持进度事件来实现HTML5方式的上传进度条.

在您看到的每个示例中,方法是向progress事件添加事件侦听器,如下所示:

req.addEventListener("progress", function(event) {
    if (event.lengthComputable) {
        var percentComplete = Math.round(event.loaded * 100 / event.total);
        console.log(percentComplete);
    }
}, false);
Run Code Online (Sandbox Code Playgroud)

这些示例似乎总是假设event.lengthComputable将为true.毕竟,浏览器肯定知道它发送的请求的长度?

无论我做什么,event.lengthComputable都是false.我已经在Safari 5.1.7和Firefox 12上测试了这两个,这两个都在OSX上.

我的网站是使用Django构建的,我在开发和生产设置上遇到了同样的问题.

我用来生成表单上传的完整代码如下所示(使用jQuery):

form.submit(function() {
    // Compile the data.
    var data = form.serializeArray();
    data.splice(0, 0, {
        name: "file",
        value: form.find("#id_file").get(0).files[0]
    });
    // Create the form data.
    var fd = new FormData();
    $.each(data, function(_, item) {
        fd.append(item.name, item.value);
    });
    // Submit the data.
    var req = new XMLHttpRequest();
    req.addEventListener("progress", function(event) {
        if (event.lengthComputable) {
            var percentComplete = …
Run Code Online (Sandbox Code Playgroud)

javascript ajax xmlhttprequest

13
推荐指数
1
解决办法
1万
查看次数

JavaScript可以设置哪些HTTP标头?

W3C是否指定XMLHttpRequest可以设置哪些HTTP头?如果是这样,他们是否出于安全原因发布了证明这些要求的文件?

是否由浏览器自行决定限制HTTP标头?如果是这样,是否有在线文档或文档集合列出了不同XHR实现的怪癖,或者是否有必要在每个实现的文档中找到该信息?

javascript http xmlhttprequest http-headers

13
推荐指数
1
解决办法
2743
查看次数

AngularJS与Jersey Webservice之间的通信,它们位于不同的域上.无法访问正确的会话

最近我一直在玩AngularJS和Java EE 6.我在Jersey上构建了一个Web服务,并在Glassfish上部署了该项目.因为我需要某种身份验证和OAuth实现或者JDBCRealm看起来有点过分,所以我决定只在用户成功登录时创建一个会话.

@POST
@Path("/login")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public Response login(LoginDAO loginData, @Context HttpServletRequest req) {
    req.getSession().invalidate();
    loginData.setPassword(PasswordGenerator.hash(loginData.getPassword()));
    User foundUser = database.login(loginData);
    if(foundUser == null) {
        return Response.status(Status.CONFLICT).build();
    }
    req.getSession(true).setAttribute("username", foundUser.getUsername());
    return Response.ok().build();
}

@GET
@Path("/ping")
public Response ping(@Context HttpServletRequest req) {
    if(req.getSession().getAttribute("username") == null) {
        return Response.ok("no session with an username attribute has been set").build();
    }
    return Response.ok(req.getSession(true).getAttribute("username")).build();
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,如果我从Postman发布/登录或从glassfish上部署的基本jQuery网页发送,我确实得到了正确的用户名并且已经放置了会话.如果我然后发送一个GET请求到/ ping我确实得到了我登录的用户名.

我在一个需要登录的node.js网络服务器上部署了一个AngularJS应用程序.因为这个服务器在另一个端口上,它在另一个域上,我不得不经历启用cors的痛苦.我这样做是通过构建一个容器响应过滤器来设置响应头.

public class CrossOriginResourceSharingFilter implements ContainerResponseFilter {
    @Override
    public ContainerResponse filter(ContainerRequest creq, ContainerResponse cresp) {
        cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "http://localhost:8000");
        cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true"); …
Run Code Online (Sandbox Code Playgroud)

xmlhttprequest jersey cors java-ee-6 angularjs

13
推荐指数
3
解决办法
1万
查看次数

继续使用XMLHttpRequest获取No'Access-Control-Allow-Origin'错误

我会通过使用jQuery $.ajax函数解决这个问题,但在这种情况下jQuery不是选项.相反,我将使用CORS请求.我觉得响应请求的网络服务器出了问题,我很难搞清楚问题所在.

这是我创建CORS请求的代码

var httpRequest = new XMLHttpRequest();
httpRequest.open('POST', url, true);
httpRequest.setRequestHeader( 'Access-Control-Allow-Origin', '*');
httpRequest.setRequestHeader( 'Content-Type', 'application/json' );
httpRequest.onerror = function(XMLHttpRequest, textStatus, errorThrown) {
  console.log( 'The data failed to load :(' );
  console.log(JSON.stringify(XMLHttpRequest));
};
httpRequest.onload = function() {
  console.log('SUCCESS!');
}
Run Code Online (Sandbox Code Playgroud)

这是console.log错误:

XMLHttpRequest无法加载 http://test.testhost.com/testpage.请求标头字段Access-Control-Allow-Origin不允许使用Access-Control-Allow-Origin.

以下是标题信息:

> Remote Address:**.**.***.**:80 Request
> URL:http://test.testdomain.com/testpage Request
> Request Method:OPTIONS
> Status Code:200 OK
Run Code Online (Sandbox Code Playgroud)

请求标题:

OPTIONS /content-network HTTP/1.1
Host: test.testhost.com
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Request-Method: POST
Origin: http://test.testdomain.com
User-Agent: Mozilla/5.0 (Macintosh; Intel …
Run Code Online (Sandbox Code Playgroud)

javascript response xmlhttprequest cors

13
推荐指数
2
解决办法
9万
查看次数

如何在Node.js中使用XHR API?

这是我上一个问题的后续行动

假设我有一些javascript代码,它在客户端(在浏览器中)运行良好.此代码XHR使用浏览器API 进行大量调用.

现在我想运行此代码node.js.是否在浏览器中node.js提供XHRAPI?

javascript xmlhttprequest node.js

13
推荐指数
2
解决办法
2万
查看次数

将withCredentials设置为新的ES6内置HTTP请求API:Fetch

如何设置withCredentials=truefetch其回报的承诺.以下是正确的:

fetch(url,{
   method:'post',
   headers,
   withCredentials: true
});
Run Code Online (Sandbox Code Playgroud)

我认为MDN文档谈到了关于http请求的所有内容,除非这一点:withCredentials

javascript xmlhttprequest ecmascript-6 fetch-api

13
推荐指数
1
解决办法
1万
查看次数