2017-05-15 52 views
-2

CORS过滤器启用码这是我的js文件,下面的代码里面.controller我应该在哪里写angularjs

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的方式吗?请帮忙!!!

+0

你应该添加标题在服务器端 –

+0

这是它使用另一个API –

+0

的指南,以使服务器端CORS码 - https://开头enable-cors.org/ –

回答

2

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

CORS-如何在内部工作

资源使一个跨域HTTP请求时,它请求从一个域或端口是从第一资源本身提供了一个不同的资源。出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。

例如: 您的应用程序在www.my-domain.com上运行,并且其请求的资源位于www.your-domain.com之上,因此不允许在脚本中发出请求。

CORS-如何解决

假设我们做了以下域通过角脚本的请求www.my-domain.comwww.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