相关疑难解决方法(0)

即使我在服务器上允许使用cors,Socket.io也会出现CORS错误

我的节点服务器和客户端在不同的端口上运行(分别为3001,5347).在客户端我用过,

var socket = io('http://127.0.0.1:3001');
Run Code Online (Sandbox Code Playgroud)

在服务器上,我逐一尝试了以下所有内容

    1) io.set('origins', '*:*');
    2) io.set('origins', 'http://127.0.0.1:5347');
    3) io.set('origins', '*');
    4) io.set('origins', '127.0.0.1:5347');
Run Code Online (Sandbox Code Playgroud)

但是我得到了以下错误:

XMLHttpRequest无法加载http://127.0.0.1:3001/socket.io/?EIO=3&transport=polling&t=1456799439856-4590.当credentials标志为true时,不能在'Access-Control-Allow-Origin'标头中使用通配符'*'.因此不允许原点'null'访问.

注意:我在服务器上使用express,我已经按照以下方式使用cors中间件:

app.use(cors());
Run Code Online (Sandbox Code Playgroud)

app和cors分别是express和cors的实例.

node.js cors socket.io

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

ng2-file-upload访问控制源问题

我已将此库用于angular2文件上传https://github.com/valor-software/ng2-file-upload

现在,当我上传文件时,我收到此错误

__PRE__

file-upload angular

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

后端和前端在不同端口上运行,CORS 错误

我在不同的端口(8000,8001)上运行后端和前端,我无法从 express 服务器制作 res.redirect(...) 并且浏览器显示 CORS 错误(访问 XMLHttpRequest at...)。

这是 MEVN(Mongo, Express, Vue, Nodejs) 应用程序,Vue 前端和 express(nodejs) 后端运行在不同的端口上。我在后端实现了 cors() ,它使我的前端可以发出请求(获取、发布)但后端仍然无法使用 res.redirect("...") 重定向前端页面,因为它显示了 CORS错误。

// Backend
var cors = require('cors');
app.use(cors())
...
function (req, res, next){  // some middleware on backend
  ...
res.redirect('http://urltofrontend');  // cause error


// Error msg on Chrome
Access to XMLHttpRequest at 'http://localhost:8001/' (redirected from 
'http://localhost:8000/api/login') from origin 'null' has been blocked 
by CORS policy: Request header field content-type is not allowed by 
Access-Control-Allow-Headers in preflight response.
Run Code Online (Sandbox Code Playgroud)

我已经完成了 …

node.js cors vue.js

9
推荐指数
1
解决办法
6346
查看次数

是什么原因导致Chrome在缓存内容上针对localhost上的服务器提供net :: ERR_FAILED?

我正在构建一个Web服务器并尝试测试.服务器正在运行localhost:888,第一次加载Web应用程序时,一切正常.但是如果我尝试重新加载页面,那么一堆XmlHttpRequest请求就会失败net::ERR_FAILED.通过在服务器代码中放置断点,我可以验证请求是否实际上从未进入.

这不是连接失败,因为连接第一次成功.它成功一次然后失败的事实意味着它可能与缓存相关,但服务器代码中没有设置cache-control头的任何内容.所以我通过将服务器放在实际的Web服务器上来测试它.第一次,一切都要花时间加载; 第二次,它立即加载,所以这肯定是缓存相关的

这是一个运行在http.sys(没有IIS)之上的自定义服务器,看起来默认情况下会缓存一些内容,然后在后续运行时无法从中加载,但只有当我的服务器在localhost上运行时才会运行.在网上,它工作正常.就像我所知道的那样,net::ERR_FAILEDChrome中有一个通用的"出错了,我们没有任何有用的信息",所以我有点卡在这里.有谁知道是什么原因引起的?

html caching google-chrome http.sys

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

401尝试实施CORS for SharePoint时

我想从位于domainB.contoso.com上的Web应用程序访问位于domainA.contoso.com上的listdata.svc(一个sharepoint服务) - 身份验证似乎是个问题.

当尝试通过JQuery Ajax调用访问ListData.svc时,启用CORS,服务器返回401.如果我从SharePoint内部执行的.htm页面运行相同的查询,则调用正常,因为域名是相同.

SharePoint正在使用NTLM关闭匿名身份验证 - 我认为401是Windows凭据未传递到SharePoint服务器的结果 - 但我不知道如何正确地将这些凭据添加到标头. 我已经设置了xhrFields:{withCredentials:true},但这似乎无法解决身份验证问题.

为了启用CORS,我在IIS中的SharePoint上设置了以下HTTP响应标头:

  • Access-Control-Allow-Credentials:true
  • Access-Control-Allow-Headers:Origin,Content-Type,Accept
  • Access-Control-Allow-Origin:*
  • 访问控制请求方法:POST,GET,HEAD,OPTIONS

在我的Web应用程序的IIS中启用了Windows身份验证,我没有在IIS中设置"OPTIONSVerbHandler"HTTP处理程序.把它翻到阅读似乎没有什么区别.

JQuery Ajax调用(来自subdomainB.contoso.com上的应用程序):

 $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        url: listUrl,
        xhrFields: { withCredentials: true },
        crossDomain:true,  
        processData: false,
        async: true,
        dataType: "json",
        converters: {
            // WCF Data Service .NET 3.5 incorrectly escapes singles quotes, which is clearly
            // not required (and incorrect) in JSON specs.
            // http://bugs.jquery.com/ticket/8320?cversion=0&cnum_hist=1
            "text json": function (textValue) {
                return jQuery.parseJSON(textValue.replace(/(^|[^\\])\\'/g, "$1'"));
            }
        },
        success: function (data, status, xhr) { …
Run Code Online (Sandbox Code Playgroud)

javascript authentication ajax sharepoint cors

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

React + ASP.NET.Core:所请求的资源上不存在“ Access-Control-Allow-Origin”标头

实际上,这不是重复的帖子,我知道在stackoverflow社区中多次问过的标题的一部分,我阅读了所有帖子和答案,但是我认为我使用的问题和技术是不同的。

首先,我应该提到的ASP.NET Core WEB/API是我的后端应用程序,Reactjs也是我的前端应用程序。

我阅读了一下CORS,发现必须CORSASP.NETApp 'Access-Control-Allow-Origin':'*'上启用并放入 请求的标头,但是在调用api时仍然出现以下错误:

所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源' http:// localhost:8080 '。该响应的HTTP状态代码为500。如果不透明响应满足您的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。

这是我的Startup.cs代码与CORS

public void ConfigureServices(IServiceCollection services)
{

    // other lines of code
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAll",
            builder =>
            {
                builder
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader();
            });
    });

    services.Configure<MvcOptions>(options =>
    {
        options.Filters.Add(new CorsAuthorizationFilterFactory("AllowAll"));
    });
    // other lines of code
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
    app.UseCors("AllowAll"); …
Run Code Online (Sandbox Code Playgroud)

c# cors reactjs .net-core asp.net-core

7
推荐指数
3
解决办法
4103
查看次数

请在401时帮助测试Firefox jQuery ajax中的CORS问题

这让我疯狂.

jQuery 1.4.2,windows XP sp3

这是我的测试.

加载Firefox 3.5+

http://plungjan.name/test/testcors.html

作品

将文件保存到硬盘并从那里运行

从我的办公室,外部工作和内部工作没有

同样有趣的是,我无法一次完成这两项任务.

背景:我对使用CORS的内部Web服务进行了GET.请不要发布有关FF的任何答案,因为这里此处详细说明自v3.5以来的处理跨域请求

它适用于从一台服务器到另一台服务器的IE8和FF3.6.6,现在几乎从文件系统(文件:///)到服务. 仅限文件系统,并且当FF 3.6.6需要协商时(用户已经登录,授权并发送凭证!)我是否在协商后得不到数据.jQuery xhr返回状态0并且没有data/responseText或者其他什么对我来说,jQuery会对401的xhr作出反应并保存xhr而不是200以后的OK

这是我在提醒XHR对象时在通信结束时得到的结果:

Status:success 
Data:[] 
XHR: 
some native functions,
readyState:4 
status:0
responseXML:null 
responseText: 
withCredentials:true
Run Code Online (Sandbox Code Playgroud)

如果我调用同一台服务器但不需要凭据,则返回的数据就是精确的跨域

所以沟通如下:

GET /restapplicationusingcors/authenticationneeded-internal/someid
Accept: application/json
Accept-Language: en
.
.
Origin: null
Cookie: LtpaToken=...
Run Code Online (Sandbox Code Playgroud)

回报是

HTTP/1.1 401 Unauthorized
Server: Apache
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 01:00:00 CET
WWW-Authenticate: Negotiate …
Run Code Online (Sandbox Code Playgroud)

javascript authentication jquery json cors

6
推荐指数
1
解决办法
3524
查看次数

如何将凭证标志设置为false?

看起来像这么简单的问题,但我找不到答案,所以让我相信也许我没有控制旗帜!?

语境:

我正在开发一个SignalR中心和客户端.如果(在信号器站点上)我在配置中设置以下内容,则一切正常:

<system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="http://example.com" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
Run Code Online (Sandbox Code Playgroud)

问题是我想在这里使用通配符.

当我这样做(即value="*")时,我得到以下错误(在客户端上):

A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true.
Run Code Online (Sandbox Code Playgroud)

我可能会在这里遗漏一些简单的东西,但我找不到允许我设置凭证标志的相关配置条目.

我试过的

<add name="Access-Control-Allow-Credentials" value="false"/>
Run Code Online (Sandbox Code Playgroud)

似乎没有什么区别(同样的错误).

ajax web-config cross-domain signalr

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

AngularJS CORS请求自定义标头

我在使用AngularJS的服务器上启用CORS时遇到问题.我正在使用Angular 1.2.16,这是我的服务器配置:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Content-Type, X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Date, X-Api-Version, X-File-Name, Authorization"
Header set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Credentials "true"
Run Code Online (Sandbox Code Playgroud)

我可以使用以下请求:

$http.post(configuration.authUrl, {username: 'username', password: 'password'})
    .success(function (data) {
         $cookieStore.put(configuration.sessionName, {
             token: data.authenticationToken,
              user: data.user
         });
    })
    .error(function () {}));
Run Code Online (Sandbox Code Playgroud)

因为此请求不使用自定义标头.

当我之后尝试请求以下内容时: Balance.get()余额为:

angular.module('portalApp')
    .factory('Balance', ['$resource', 'Auth', 'configuration', function ($resource, Auth, configuration) {
        return $resource(configuration.balanceUrl, {}, {
            get: {
                method: 'GET',
                isArray: false,
                headers: {
                    Authorization: Auth.getAuthToken() …
Run Code Online (Sandbox Code Playgroud)

javascript cors angularjs

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

Access-Control-Allow-Origin angularjs到php

我的场景由两个webserver组成,一个是本地的,一个是远程的.

本地Web服务器(Apache)处理一个Web应用程序,我想在其中向远程Web服务器(Lighttpd)发出ajax请求.

Ajax请求使用angularjs $ http.

var req = {
    method: 'POST',
    url: 'http://url/myphp.php',
    headers: {
        'Authorization': 'Basic ' + btoa('username:password'),
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    xhrFields: {
       withCredentials: true
    },
    crossDomain: true,
    data: xmlString
}

$http(req).then(function () {
    console.log("OK!");
});
Run Code Online (Sandbox Code Playgroud)

远程php脚本是:

<?php
    echo "You have CORS!";
?>
Run Code Online (Sandbox Code Playgroud)

不幸的是我有一个

401 Unhauthorized
XMLHttpRequest cannot load http://url/myphp.php. Response to    preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8888' is therefore not allowed access. The response had …
Run Code Online (Sandbox Code Playgroud)

php lighttpd http cors angularjs

5
推荐指数
1
解决办法
1147
查看次数