Socket.io: CORS

作成日 2017年02月03日  ·  11コメント  ·  ソース: socketio/socket.io

hej、

応答ヘッダーAccess-Control-Allow-Originを削除するにはどうすればよいですか?
設定{'origins' : 'asfdasd.com'}が機能しないようです。

POST /socket.io/?EIO=3&transport=polling&t=1481690658797-5&sid=Dp18NNt_bWPkB4rGAAAP HTTP / 1.1
起源: https

HTTP / 1.1400不正なリクエスト
コンテンツタイプ:application / json
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin: https
日付:2017年2月3日金曜日12:27:42 GMT
接続:キープアライブ
転送エンコーディング:チャンク

最も参考になるコメント

@thEpisodeこれは古いスレッドだと思いますが、その最後のリンクが私にとってそれを修正したものでした! Expressチュートリアルのほとんどにはapp.listen(...)がありますが、 socket.ioを使用する場合は、 index.js http.listen(...)を呼び出し、リッスンしないようにする必要があります。 appオブジェクト、またはこのCORSの問題が発生します。 こんなに小さいこと!

全てのコメント11件

同じエラー

@Kenzku @thEpisodeどのバージョンのsocket.ioを使用していますか?

2.x (https://github.com/socketio/engine.io/pull/452を含む)で修正する必要があります。

こんにちは@darrachequesne返信ありがとう

Googleのすべてのソリューションで問題が解決されなかったため、非常に不満を感じています。GitHubの問題やStackOverflowに投稿しなかったことをお詫びしますが、解決できるすべての詳細を提供したいと思います。 テストするいくつかのURL:

バックエンドURI: http
Express CORSのテスト: https
Socket.io CORSのテスト: https ://testcrawlersite.000webhostapp.com(コンソールを参照してください)
テストするプライマリサイト: http
Socket.ioファイル: http ://crawlerbackend.azurewebsites.net/socket.io.js

app.jsの一部:
`
var path = require( 'path');
var bodyParser = require( 'body-parser');
var cors = require( 'cors');
var express = require( 'express');
var app = express();

// use body parser so we can get info from POST and/or URL parameters
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
app.use(bodyParser.json()); // support json encoded bodies
app.use(cors({ origin: '*' }));
// Settings for CORS
app.use(function (req, res, next) {

    // Website you wish to allow to connect
    res.header('Access-Control-Allow-Origin', '*');

    // Request methods you wish to allow
    res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    // Request headers you wish to allow
    res.header('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

    // Set to true if you need the website to include cookies in the requests sent
    // to the API (e.g. in case you use sessions)
    res.setHeader('Access-Control-Allow-Credentials', false);

    // Pass to next layer of middleware
    next();
});

var server = app.listen(cross.NormalizePort(process.env.PORT || 3500));
var io = require('socket.io').listen(server, {
    log: false,
    agent: false,
    origins: '*:*',
    transports: ['websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling', 'polling']
});

`

問題は解決しました!! @Kenzkuは、このドキュメントを確認してください: httpsください//github.com/socketio/socket.io /blob/master/lib/index.js#L67そして、Expressを使用しているかどうかを確認します(この例は非常に便利です): https

素晴らしい! 今すぐ問題を解決できると思います。

@thEpisodeこれは古いスレッドだと思いますが、その最後のリンクが私にとってそれを修正したものでした! Expressチュートリアルのほとんどにはapp.listen(...)がありますが、 socket.ioを使用する場合は、 index.js http.listen(...)を呼び出し、リッスンしないようにする必要があります。 appオブジェクト、またはこのCORSの問題が発生します。 こんなに小さいこと!

@frewinchristopher私はあなたが上で述べたのと同じパターンに従っていて、ローカルでは正常に動作していますが、リモートではスローします(理由:CORSリクエストは成功しませんでした)。 私が間違っているところ..?

@gowthamyaalコードを教えていただけますか?

ご心配ありがとうございますが、CORSの問題を解決しました。AWSを使用していたため、エラスティックIPとローカルIPとの競合が発生しました。後で、ソケットリスニングIPを0.0.0.0に変更しました。これにより、問題が解決しました。

リモートで競合状態の問題に直面しています。webpack-dev-configを使用しています。ioconnectを使用して同じファイルにコードを出力しようとしましたが、未定義のエラーが発生します。

webpack-dev-config

クライアントソケットコード
;)

コメントされた行は私のために働きました....誰かがこれで私を助けることができます....事前に感謝します

私は見つけたすべての解決策に従いましたが、まだ実用的な応答を送信していません。 誰かが見てもらえれば、私はとても感謝しています。

`const express = require( 'express')
const http = require( 'http')
const socketIO = require( 'socket.io')
const cors = require( 'cors')

//ホストポート
constポート= 3001

const app = express()
app.use(cors())
//サーバーインスタンス
const server = http.createServer(app)
//サーバーインスタンスを使用してソケットを作成します
const io = socketIO(server)

io.origins( "http:// localhost:3000")

io.on( 'connection'、socket => {
console.log( "ユーザー接続")

socket.on('disconnect', () => {
    console.log("User Disconnected")
})

socket.on('send message', (message) => {
    io.sockets.emit('send message', message)
})

})

server.listen(port、()=> console.log( Listening on port ${port} )) `

このページは役に立ちましたか?
0 / 5 - 0 評価