我的HTTP over AJAX有什么问题(javascript)

时间:2015-10-21 17:03:50

标签: javascript ajax http authentication basic-authentication

我的代码: var answer_array = [];

    TaskCompletionSource<object> fileChanged = new TaskCompletionSource<object>();

    private void onFileChanged(object sender, EventArgs e)
    {
        fileChanged.TrySetResult(null);
    }

    private async Task endlessLoop()
    {
        while (true)
        {
            await handleFilesNotChanged();
        }
    }

    private async Task handleFilesNotChanged()
    {
        Task timeout = Task.Delay(TimeSpan.FromMinutes(5));
        Task waitForFile = fileChanged.Task;

        if (await Task.WhenAny(timeout, waitForFile) == timeout)
        {
            fireMyCode();
        }
        fileChanged = new TaskCompletionSource<object>();
    }

这是我的控制台中的内容: scripts2.js:22选项https://api.comettracker.com/v1/gpsdata?fromdate=2015-10-13(匿名函数)@ scripts2.js:22 2015-10-21 12:41:09.059 index.html:1 XMLHttpRequest无法加载https://api.comettracker.com/v1/gpsdata?fromdate=2015-10-13。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许原点'null'访问。响应的HTTP状态代码为405。

当我转到Chrome上的网络标签时,我看到了: gpsdata?fromdate = 2015-10-13 OPTIONS 405 xhr scripts2.js:22 0 B 452 ms

1 个答案:

答案 0 :(得分:1)

此错误消息:

No 'Access-Control-Allow-Origin' header is present on the requested resource

表示您遇到了跨域权限问题,这意味着您尝试访问的站点不允许从您的页面所在的域进行访问。如果您的网页位于使用file://网址访问的本地硬盘上,那么您可以做的第一件事就是将其放在实际的网络服务器上并在那里尝试,因为file://网址有一些额外的限制在他们身上。

如果这也不起作用,则问题是api.comettracker.com网站不允许从您的特定网站进行访问。

当我将你的代码放入jsFiddle并在那里尝试并查看网络跟踪时,我看到的是{{1}拒绝用于预先传送跨源请求的OPTIONS方法这告诉浏览器不允许当前格式化的交叉原始请求。

如果从请求中删除了自定义标头,则会出现其他错误,因此我认为您的自定义标头有不正确之处。由于我不知道那个特定的API,没有你的访问凭证或知道如何使用它们,我不知道究竟是什么建议的标题,但我认为这是开始的地方。