ค้นหาเว็บไซต์

javascript - วิธีเปิดใช้งาน CORS ใน AngularJs


ฉันได้สร้างตัวอย่างสาธิตโดยใช้ JavaScript สำหรับ API การค้นหารูปภาพของ Flickr ตอนนี้ฉันกำลังแปลงมันเป็น AngularJs ฉันได้ค้นหาในอินเทอร์เน็ตและพบการตั้งค่าด้านล่าง

การตั้งค่า:

myApp.config(function($httpProvider) {
  $httpProvider.defaults.useXDomain = true;
  delete $httpProvider.defaults.headers.common['X-Requested-With'];
});

บริการ :

myApp.service('dataService', function($http) {
    delete $http.defaults.headers.common['X-Requested-With'];
    this.flickrPhotoSearch = function() {
        return $http({
            method: 'GET',
            url: 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=3f807259749363aaa29c76012fa93945&tags=india&format=json&callback=?',
            dataType: 'jsonp',
            headers: {'Authorization': 'Token token=xxxxYYYYZzzz'}
         });
     }
});

ตัวควบคุม:

myApp.controller('flickrController', function($scope, dataService) {
    $scope.data = null;
    dataService.flickrPhotoSearch().then(function(dataResponse) {
        $scope.data = dataResponse;
        console.log($scope.data);
    });
});

แต่ฉันยังคงเจอข้อผิดพลาดเดิม นี่คือลิงก์บางส่วนที่ฉันลอง:

XMLHttpRequest ไม่สามารถโหลด URL ได้ แหล่งที่มาไม่อนุญาตโดย Access-Control-Allow-Origin

http://samurails.com/tutorial/cors-with-angular-js-and-sinatra/

คำตอบ #1

คุณไม่สามารถทำได้ เซิร์ฟเวอร์ที่คุณส่งคำขอไปต้องทำการติดตั้ง CORS เพื่ออนุญาตให้ JavaScript จากเว็บไซต์ของคุณเข้าถึงได้ JavaScript ของคุณไม่สามารถให้สิทธิ์ตัวเองในการเข้าถึงเว็บไซต์อื่นได้

คำตอบ #2

ฉันเคยมีปัญหาคล้ายกัน และสำหรับฉัน มันเกี่ยวข้องกับการเพิ่ม HTTP headers ต่อไปนี้ที่ การตอบสนอง ของ ปลายทางที่รับ:

Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: *

คุณอาจเลือกที่จะไม่ใช้ * ที่ท้าย แต่ใช้เพียงชื่อโดเมนของโฮสต์ที่ส่งข้อมูล เช่น *.example.com

แต่นี่สามารถทำได้เฉพาะเมื่อคุณมีสิทธิ์เข้าถึงการตั้งค่าของเซิร์ฟเวอร์เท่านั้น

บทความที่เกี่ยวข้อง