我应该在angularjs中何处编写cors过滤器启用码

时间:2017-05-15 06:31:55

标签: angularjs angularjs-directive cors

这是我的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的方法吗?请帮忙!!!

1 个答案:

答案 0 :(得分:1)

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

CORS-内部工作方式

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

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

CORS-如何解决

假设我们通过域www.my-domain.com下的角度脚本发出请求www.your-domain.com\id。此请求在/id上的端点www.your-domain.com上点击服务器。因此,在服务器呈现/发送响应时,它会在响应中设置'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