10463


**質問**  
・どう書けば良いでしょうか？

**現状**  
・うまくいかない  
・意図しない結果(NG)になります…

[code]

    var url="××";
    
    var currentUrl = location.origin;
    
    if ( url.match(/currentUrl/)) {
     //同一生成元ポリシーOK
    }else{
     //同一生成元ポリシーNG
    }
    
[/code]


CC BY-SA 3.0
2015-05-21T01:17:29.177
10440
2015-05-22T04:32:57.560
7886
question
javascript
指定urlが、現在urlと比較して、同一生成元ポリシーかどうか条件分岐したい


`url.match(/currentUrl/)`だと、"currentUrl"という文字列に対するマッチングになってしまうので、うまくいきませんね。  
こんな感じでもいいですか？

[code]

    if (url.indexOf(location.origin) === 0) {
    
[/code]


CC BY-SA 3.0
2015-05-21T10:36:13.580
10463
2015-05-21T10:36:13.580
8078
10440
answer


[Qiitaの投稿にあるcreateElementで作った`a`
DOMオブジェクトを使ってパースさせる方法](http://qiita.com/_shimizu/items/850040f8625d886e523b)を参考にしました。

originメソッドはIEがサポートしてないようですが、それでいいのであれば

[code]

    var url=new URL("http://example.jp");
    
    if( location.origin == url.origin){
        //same origin
    }
    
[/code]

でよさそうです。

IEもサポートするのであれば、上記URLの手法でURLをパースした上で、originメソッドを使わずにprotocolとhostを個別に比較する必要がありそうです。

[code]

    var element = document.createElement('a');
    a.href="http://example.jp";
    
    if(  location.protocol == element.protocol && location.host == element.host) {
        //same origin
    }
    
[/code]


CC BY-SA 3.0
2015-05-22T04:32:57.560
10490
2015-05-22T04:32:57.560
5793
10440
answer