我应该在哪里编写 angularjs 中的 cors 过滤器启用代码

Posted

技术标签:

【中文标题】我应该在哪里编写 angularjs 中的 cors 过滤器启用代码【英文标题】:Where should I write cors filter enabler code in angularjs 【发布时间】:2017-10-13 20:16:50 【问题描述】:

这是我的js文件,下面的代码在.controller里面

xhr.onreadystatechange = function () 
  if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200)
    $http.post(smsHorizon,'Access-Control-Allow-Origin', '*').then(function(res)
      res.addheader('Access-Control-Allow-Origin', '*');
      res.addheader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
      res.addheader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
      if(res)
        alert("OTP has been Send");
      
    )
  
  else

  

这是编码cors的方法吗?请帮忙!!!

【问题讨论】:

你应该在服务器端添加标题 这是使用另一个 api 的服务器端代码 启用 CORS 的指南 - enable-cors.org How to enable CORS in AngularJs 的可能重复项。 【参考方案1】:

CORS 请求启用永远在线的服务器端。您需要在响应头上设置CORS

CORS - 内部工作原理

当资源从与第一个资源本身服务的域或端口不同的域或端口请求资源时,它会发出跨域 HTTP 请求。出于安全原因,浏览器会限制从脚本中发起的跨域 HTTP 请求。

例如: 您的应用在www.my-domain.com 上运行,并且它对www.your-domain.com 上的资源的请求比浏览器不允许在脚本中发出请求。

CORS - 如何解决

假设我们通过域www.my-domain.com 下的角度脚本发出请求是www.your-domain.com\id。此请求在www.your-domain.com 上的端点/id 上到达服务器。因此,在服务器渲染/发送响应时,它会在响应中设置 'Access-Control-Allow-Origin', '*' 标头。

//java-jersey example
Response.status(200).entity(data)
                    .header("Access-Control-Allow-Origin", "*")
                    .header("Access-Control-Allow-Methods", "GET")
                    .build();

//Nodejs Example
var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

app.get('/products/:id', function (req, res, next) 
  res.json(msg: 'This is CORS-enabled for all origins!')
)

更多详情:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

【讨论】:

以上是关于我应该在哪里编写 angularjs 中的 cors 过滤器启用代码的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS on Rails 中的 CORS 问题

使用 Eve 和 AngularJS 的 CORS 问题

AngularJS中的CORS错误

rails-api 和 angularJs 中的 CORS

WEB API AngularJS Google+Login CORS 不允许

来自 jQuery 的 CORS 成功但使用 AngularJs 失败