Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 否';访问控制允许原点';请求的资源上存在标头-5_Javascript_Angular_Web Services_Cross Browser_Cross Domain - Fatal编程技术网

Javascript 否';访问控制允许原点';请求的资源上存在标头-5

Javascript 否';访问控制允许原点';请求的资源上存在标头-5,javascript,angular,web-services,cross-browser,cross-domain,Javascript,Angular,Web Services,Cross Browser,Cross Domain,我正试图从我的angular服务访问web服务,并设置了与跨原点相关的头。但是,我仍然无法访问web服务。浏览器一直在说 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost:4200因此,不允许访问。响应的HTTP状态代码为403。 我可以在浏览器(chrome)和邮递员中访问相同的URL,但不能在应用程序中访问 private headers = new HttpHeaders() .set('Access-Control-

我正试图从我的angular服务访问web服务,并设置了与跨原点相关的头。但是,我仍然无法访问web服务。浏览器一直在说

对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost:4200因此,不允许访问。响应的HTTP状态代码为403。

我可以在浏览器(chrome)和邮递员中访问相同的URL,但不能在应用程序中访问

private headers = new HttpHeaders()
.set('Access-Control-Allow-Origin', '*')
.set('Content-Type', 'application/json;charset=UTF-8')
.set('Access-Control-Allow-Headers', '*')
.set('Access-Control-Allow-Methods', 'GET, OPTIONS');

public getData(): Promise<Object> {
  return this._http.get(this._url, {headers: this.headers})
  .toPromise()
  .then(response => {
      return response;
    }
  )
  .catch(testService.handleError);
private headers=new-HttpHeaders()
.set('Access-Control-Allow-Origin','*'))
.set('Content-Type','application/json;charset=UTF-8')
.set('Access-Control-Allow-Headers','*'))
.set('Access-Control-Allow-Methods','GET,OPTIONS');
public getData():承诺{
返回此。_http.get(此。_url,{headers:this.headers})
.toPromise()
。然后(响应=>{
返回响应;
}
)
.catch(testService.handleError);
}


这里有我遗漏的东西吗

因此,有两种方法

  • 如果您有权编辑web服务

    您需要允许跨源资源共享。 如果您使用的是Node.js,下面是要添加的代码示例

    // ~ Cross origin resource sharing ~ //
    var cors = require('cors');
    // ~ Initialize the app ~ //
    var app = express();
    // ~ Enbling CORS ~ //
    app.use(cors());
    
  • 您可以添加浏览器扩展,使您能够在浏览器上运行时修复angular应用程序的CORS错误

  • 这是铬的

    这是给Mozilla的

    你可以在



    我希望这有帮助。如果有任何错误,请通过注释告知我。

    解决此问题的方法有多种,但首先需要确定客户端发送的额外请求头参数(如果有)

    使用broswer的任何开发人员控制台都可以更早地发现这一点。另一个指针是检查
    options
    call(如果有)的响应/错误

    一旦确定,您将需要从服务器启用适当的响应参数,在您的情况下,选项调用似乎没有在响应中设置
    访问控制允许原点


    如果这有助于您诊断问题,请告诉我。

    试试JSONP。基本上按照WC3学校

    JSONP是一种发送JSON数据的方法,无需担心跨域问题

    JSONP不使用XMLHttpRequest对象


    这是一个关于JSONP如何工作的解释

    我们可以看到
    这个的值吗?\u url
    请?发布的代码是针对请求资源的客户端还是针对服务器的?发送响应时,需要设置CORS头的是服务器,而不是请求中的客户端。如果我认为不错,您正在尝试访问本地主机上运行的web服务。要做到这一点,您必须在web服务中允许COR,而不是在angular中。错误显示您尝试访问的服务器(或web服务)没有授权您请求他。服务器这样做是出于安全考虑。如果您想了解更多信息,请检查谷歌上的CORS错误。对不起,我的页面尚未刷新,CRice回答了您的问题OK。谢谢@CRice&Nathan。发布的代码用于从服务器请求资源。