JS URL - צריך לכלול סכמה? תלוי... עריכה: צריך!
-
תראו את הקוד הזה:
new URL('google.com/search')
זה מניב שגיאה של כתובת לא חוקית. נו, אולי בגלל שצריך לכלול את הסכמה (http)? בודאי, הנה ראיה:
new URL('http://google.com/search')
עובד!
אבל במהלך הפיתוח כל הזמן עבד לי ללא סכמה!!?!
שהתברר שהיה למחלקה החכמה דרך להבין שההתחלה היא שם דומיין וממילא למחול על העדר הסכמה. כי פשוט היה פורט:new URL('google.com:8888/search')
איך כתוב בחתימה של @clickone? אין טסט כמו פרודקשיין. -
@dovid
א. אם משתעמם לך נורא: https://url.spec.whatwg.org/#url-parsing
ב. כתבתשהיה למחלקה החכמה דרך להבין שההתחלה היא שם דומיין וממילא למחול על העדר הסכמהה
אני חושש שזה לא נדיבות או סלחנות...
תבדוק את ההבדל:console.table(new URL('google.com:8888/search'))
(index) Value origin 'null' protocol 'google.com:' pathname '8888/search' href 'google.com:8888/search' new URL('http://google.com:8888/search')
(index) Value origin 'http://google.com:8888' protocol 'http:' host 'google.com:8888' hostname 'google.com' port '8888' pathname '/search' href 'http://google.com:8888/search' -
@dovid הזיהוי של JS לסיום פרוטוקול הוא לפי נקודתיים.
אם אין נקודתיים אז ברור לו שאין כתובת תקינה והוא יקפיץ שגיאה. במקרה שלך כפי שתראה בדוגמה ש @yossiz הביא החלק הראשון (דהיינו google.com: ) נהפך לפרוטוקול.
היות והדרישה כדי להקפיץ שגיאה של כתובת לא חוקית היא שלא יהיה מבנה כתובת חוקי. ברגע שהוא מצא פרוטוקול היות והוא לא יודע מה הכללים של פרוטוקול google.com הוא כבר לא יקפיץ שגיאה. -
@משתמש-תמים אכן מסביר הכל, תודה.