【问题标题】:Where should I write cors filter enabler code in angularjs我应该在哪里编写 angularjs 中的 cors 过滤器启用代码
【发布时间】: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的方法吗?请帮忙!!!

【问题讨论】:

标签: angularjs angularjs-directive cors


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 2011-10-08
    • 2019-02-27
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    相关资源
    最近更新 更多