在javascript中发送预检cors请求

时间:2015-07-10 18:59:04

标签: javascript rest http-headers cors

我正在尝试将POST请求发送到自定义api(我有凭据)但仍然收到401错误“Unathorized”。这是发出请求的代码的一部分:

var httpRequest = new XMLHttpRequest();
var test = [{
                          "action": "start",
                          "time": "2014-05-02T13:09:22+02:00",
                          "channel": {
                          "id": "rtvslo1"
                          },
                          "content": {
                            "id": "rtvslo1",
                             "title": "testContent",
                             "channel_id": "rtvslo1",
                             "time": "2014-05-02T13:09:22+02:00",
                             "duration": 3
                          },
                          "subscriber": {
                            "id": "f8721ca0-d1e9-11e3-9c1a-0800200c9a66",
                            "country": "si"
                          },
                          "device": {
                            "id": "012fa920-d1ea-11e3-9c1a-0800200c9a66",
                            "type": "tv"
                          },
                          "hd": false,
                          "test": true
                        }];

            var jsonString = JSON.stringify(test);

            httpRequest.open('POST', url, true);
            httpRequest.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
            httpRequest.setRequestHeader("Content-type", "application/json");
            httpRequest.send(jsonString);

当我试图查看chrome dev工具中的错误时,我得到 OPTIONS 请求是401 Unathorized,所以它甚至没有进入POST。

在chrom dev工具中我得到输出:名称:事件方法:选项状态401 ...

选项http://xstreampipy.tvbeat.com/api/2.0/events 401(未经授权)myFunction @ test.html:39onclick @ test.html:60 test.html:1 XMLHttpRequest无法加载http://xstreampipy.tvbeat.com/api/2.0/events。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许原点'null'访问。响应的HTTP状态代码为401。

任何帮助将不胜感激:)!

1 个答案:

答案 0 :(得分:0)

此错误基本上意味着您正在进行的其他请求是跨域,即mydomain.com - > restservicedomain.com。这些请求不再有效或被删除(不知道为什么他们会这样做)。解决此问题的方法有很多种。您可以使用这些链接来理解和实施解决方案 -

我还在尝试实现CORS请求,因此没有正在运行的代码。