2017-05-15 76 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