2017-04-22 1 views
0

소켓 IO를 사용하여 백엔드 서버와 통신하는 크롬 확장 프로그램을 개발 중입니다. 문제는 내 연결이 교차하는 원본 정책에 의해 차단 된 것으로 보입니다.소켓 IO - 크롬 확장 CORS

내 서버가 로컬 호스트에서 실행 중일 때 로컬 디렉토리에서로드하는 크롬 확장자에 다른 "origin"헤더가있어 요청이 차단됩니다.

어떻게 로컬 크롬 확장에서 소켓 IO 연결을 허용 할 수 있습니까?

요청 :

https://localhost:8000/socket.io/?EIO=3&transport=polling&t=LkNvOuH net::ERR_CONNECTION_CLOSED 

헤더는 :

Provisional headers are shown 
Accept:*/* 
Origin:chrome-extension://acgnndapfmilgphkhkdkipfiipikkjki 
Referer:https://docs.google.com/presentation 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 

답변

0

당신은 당신이 제대로 Socket.IO를 통합 할 수있는 방법을 보여줍니다있는이 documentation을 확인 할 수 있습니다.

상세한, Socket.IO는 두 부분으로 구성되어있다 :

  • (또는 마운트)를 Node.js를 HTTP 서버와 통합 서버 : socket.io
  • 클라이언트 라이브러리에로드

    : 브라우저 측 : 당신은 단지 하나 개의 모듈을 설치해야하므로 socket.io-client

참고 또한 개발하는 동안, socket.io는 자동으로 클라이언트를 제공

npm install --save socket.io 

그러면 모듈이 설치되고 종속성이 package.json에 추가됩니다. 편집 index.js 그것을 추가 : 또한

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

, 내가 IO를 (전화 어떤 URL)를 지정하고 있지 않다

공지 사항, 기본값 이후를 제공하는 호스트에 연결을 시도에 페이지.

마지막으로이 thread 또는 관련 SO post에서 제안 된 해결 방법을 확인할 수도 있습니다.

당신이 백엔드 익스프레스 프레임 워크를 사용하는 경우
0

, 나는 서버에 cors 미들웨어를 추가하여 해결하고 난이 줄을 추가 app.use(cors())